{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Image Captioning with RNNs\n",
    "In this exercise you will implement a vanilla recurrent neural networks and use them it to train a model that can generate novel captions for images."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# As usual, a bit of setup\n",
    "from __future__ import print_function\n",
    "import time, os, json\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "from cs231n.gradient_check import eval_numerical_gradient, eval_numerical_gradient_array\n",
    "from cs231n.rnn_layers import *\n",
    "from cs231n.captioning_solver import CaptioningSolver\n",
    "from cs231n.classifiers.rnn import CaptioningRNN\n",
    "from cs231n.coco_utils import load_coco_data, sample_coco_minibatch, decode_captions\n",
    "from cs231n.image_utils import image_from_url\n",
    "\n",
    "%matplotlib inline\n",
    "plt.rcParams['figure.figsize'] = (10.0, 8.0) # set default size of plots\n",
    "plt.rcParams['image.interpolation'] = 'nearest'\n",
    "plt.rcParams['image.cmap'] = 'gray'\n",
    "\n",
    "# for auto-reloading external modules\n",
    "# see http://stackoverflow.com/questions/1907993/autoreload-of-modules-in-ipython\n",
    "%load_ext autoreload\n",
    "%autoreload 2\n",
    "\n",
    "def rel_error(x, y):\n",
    "    \"\"\" returns relative error \"\"\"\n",
    "    return np.max(np.abs(x - y) / (np.maximum(1e-8, np.abs(x) + np.abs(y))))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Install h5py\n",
    "The COCO dataset we will be using is stored in HDF5 format. To load HDF5 files, we will need to install the `h5py` Python package. From the command line, run: <br/>\n",
    "`pip install h5py`  <br/>\n",
    "If you receive a permissions error, you may need to run the command as root: <br/>\n",
    "```sudo pip install h5py```\n",
    "\n",
    "You can also run commands directly from the Jupyter notebook by prefixing the command with the \"!\" character:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Requirement already satisfied: h5py in c:\\program files\\anaconda3\\lib\\site-packages\n",
      "Requirement already satisfied: numpy>=1.6.1 in c:\\program files\\anaconda3\\lib\\site-packages (from h5py)\n",
      "Requirement already satisfied: six in c:\\program files\\anaconda3\\lib\\site-packages (from h5py)\n"
     ]
    }
   ],
   "source": [
    "!pip install h5py"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Microsoft COCO\n",
    "For this exercise we will use the 2014 release of the [Microsoft COCO dataset](http://mscoco.org/) which has become the standard testbed for image captioning. The dataset consists of 80,000 training images and 40,000 validation images, each annotated with 5 captions written by workers on Amazon Mechanical Turk.\n",
    "\n",
    "You should have already downloaded the data by changing to the `cs231n/datasets` directory and running the script `get_assignment3_data.sh`. If you haven't yet done so, run that script now. Warning: the COCO data download is ~1GB.\n",
    "\n",
    "We have preprocessed the data and extracted features for you already. For all images we have extracted features from the fc7 layer of the VGG-16 network pretrained on ImageNet; these features are stored in the files `train2014_vgg16_fc7.h5` and `val2014_vgg16_fc7.h5` respectively. To cut down on processing time and memory requirements, we have reduced the dimensionality of the features from 4096 to 512; these features can be found in the files `train2014_vgg16_fc7_pca.h5` and `val2014_vgg16_fc7_pca.h5`.\n",
    "\n",
    "The raw images take up a lot of space (nearly 20GB) so we have not included them in the download. However all images are taken from Flickr, and URLs of the training and validation images are stored in the files `train2014_urls.txt` and `val2014_urls.txt` respectively. This allows you to download images on the fly for visualization. Since images are downloaded on-the-fly, **you must be connected to the internet to view images**.\n",
    "\n",
    "Dealing with strings is inefficient, so we will work with an encoded version of the captions. Each word is assigned an integer ID, allowing us to represent a caption by a sequence of integers. The mapping between integer IDs and words is in the file `coco2014_vocab.json`, and you can use the function `decode_captions` from the file `cs231n/coco_utils.py` to convert numpy arrays of integer IDs back into strings.\n",
    "\n",
    "There are a couple special tokens that we add to the vocabulary. We prepend a special `<START>` token and append an `<END>` token to the beginning and end of each caption respectively. Rare words are replaced with a special `<UNK>` token (for \"unknown\"). In addition, since we want to train with minibatches containing captions of different lengths, we pad short captions with a special `<NULL>` token after the `<END>` token and don't compute loss or gradient for `<NULL>` tokens. Since they are a bit of a pain, we have taken care of all implementation details around special tokens for you.\n",
    "\n",
    "You can load all of the MS-COCO data (captions, features, URLs, and vocabulary) using the `load_coco_data` function from the file `cs231n/coco_utils.py`. Run the following cell to do so:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "val_image_idxs <class 'numpy.ndarray'> (195954,) int32\n",
      "train_image_idxs <class 'numpy.ndarray'> (400135,) int32\n",
      "train_features <class 'numpy.ndarray'> (82783, 512) float32\n",
      "train_captions <class 'numpy.ndarray'> (400135, 17) int32\n",
      "val_urls <class 'numpy.ndarray'> (40504,) <U63\n",
      "val_features <class 'numpy.ndarray'> (40504, 512) float32\n",
      "idx_to_word <class 'list'> 1004\n",
      "val_captions <class 'numpy.ndarray'> (195954, 17) int32\n",
      "word_to_idx <class 'dict'> 1004\n",
      "train_urls <class 'numpy.ndarray'> (82783,) <U63\n"
     ]
    }
   ],
   "source": [
    "# Load COCO data from disk; this returns a dictionary\n",
    "# We'll work with dimensionality-reduced features for this notebook, but feel\n",
    "# free to experiment with the original features by changing the flag below.\n",
    "data = load_coco_data(pca_features=True)\n",
    "\n",
    "# Print out all the keys and values from the data dictionary\n",
    "for k, v in data.items():\n",
    "    if type(v) == np.ndarray:\n",
    "        print(k, type(v), v.shape, v.dtype)\n",
    "    else:\n",
    "        print(k, type(v), len(v))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Look at the data\n",
    "It is always a good idea to look at examples from the dataset before working with it.\n",
    "\n",
    "You can use the `sample_coco_minibatch` function from the file `cs231n/coco_utils.py` to sample minibatches of data from the data structure returned from `load_coco_data`. Run the following to sample a small minibatch of training data and show the images and their captions. Running it multiple times and looking at the results helps you to get a sense of the dataset.\n",
    "\n",
    "Note that we decode the captions using the `decode_captions` function and that we download the images on-the-fly using their Flickr URL, so **you must be connected to the internet to view images**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "# Sample a minibatch and show the images and captions\n",
    "# batch_size = 3\n",
    "\n",
    "# captions, features, urls = sample_coco_minibatch(data, batch_size=batch_size)\n",
    "# for i, (caption, url) in enumerate(zip(captions, urls)):\n",
    "#     plt.imshow(image_from_url(url))\n",
    "#     plt.axis('off')\n",
    "#     caption_str = decode_captions(caption, data['idx_to_word'])\n",
    "#     plt.title(caption_str)\n",
    "#     plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Recurrent Neural Networks\n",
    "As discussed in lecture, we will use recurrent neural network (RNN) language models for image captioning. The file `cs231n/rnn_layers.py` contains implementations of different layer types that are needed for recurrent neural networks, and the file `cs231n/classifiers/rnn.py` uses these layers to implement an image captioning model.\n",
    "\n",
    "We will first implement different types of RNN layers in `cs231n/rnn_layers.py`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Vanilla RNN: step forward\n",
    "Open the file `cs231n/rnn_layers.py`. This file implements the forward and backward passes for different types of layers that are commonly used in recurrent neural networks.\n",
    "\n",
    "First implement the function `rnn_step_forward` which implements the forward pass for a single timestep of a vanilla recurrent neural network. After doing so run the following to check your implementation. You should see errors less than 1e-8."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "next_h error:  6.29242142647e-09\n"
     ]
    }
   ],
   "source": [
    "N, D, H = 3, 10, 4\n",
    "\n",
    "x = np.linspace(-0.4, 0.7, num=N*D).reshape(N, D)\n",
    "prev_h = np.linspace(-0.2, 0.5, num=N*H).reshape(N, H)\n",
    "Wx = np.linspace(-0.1, 0.9, num=D*H).reshape(D, H)\n",
    "Wh = np.linspace(-0.3, 0.7, num=H*H).reshape(H, H)\n",
    "b = np.linspace(-0.2, 0.4, num=H)\n",
    "\n",
    "next_h, _ = rnn_step_forward(x, prev_h, Wx, Wh, b)\n",
    "expected_next_h = np.asarray([\n",
    "  [-0.58172089, -0.50182032, -0.41232771, -0.31410098],\n",
    "  [ 0.66854692,  0.79562378,  0.87755553,  0.92795967],\n",
    "  [ 0.97934501,  0.99144213,  0.99646691,  0.99854353]])\n",
    "\n",
    "print('next_h error: ', rel_error(expected_next_h, next_h))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Vanilla RNN: step backward\n",
    "In the file `cs231n/rnn_layers.py` implement the `rnn_step_backward` function. After doing so run the following to numerically gradient check your implementation. You should see errors less than `1e-8`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dx error:  2.76045778324e-10\n",
      "dprev_h error:  2.58357183767e-10\n",
      "dWx error:  6.22815890058e-10\n",
      "dWh error:  5.03426517319e-10\n",
      "db error:  1.7551478228e-11\n"
     ]
    }
   ],
   "source": [
    "from cs231n.rnn_layers import rnn_step_forward, rnn_step_backward\n",
    "np.random.seed(231)\n",
    "N, D, H = 4, 5, 6\n",
    "x = np.random.randn(N, D)\n",
    "h = np.random.randn(N, H)\n",
    "Wx = np.random.randn(D, H)\n",
    "Wh = np.random.randn(H, H)\n",
    "b = np.random.randn(H)\n",
    "\n",
    "out, cache = rnn_step_forward(x, h, Wx, Wh, b)\n",
    "\n",
    "dnext_h = np.random.randn(*out.shape)\n",
    "\n",
    "fx = lambda x: rnn_step_forward(x, h, Wx, Wh, b)[0]\n",
    "fh = lambda prev_h: rnn_step_forward(x, h, Wx, Wh, b)[0]\n",
    "fWx = lambda Wx: rnn_step_forward(x, h, Wx, Wh, b)[0]\n",
    "fWh = lambda Wh: rnn_step_forward(x, h, Wx, Wh, b)[0]\n",
    "fb = lambda b: rnn_step_forward(x, h, Wx, Wh, b)[0]\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(fx, x, dnext_h)\n",
    "dprev_h_num = eval_numerical_gradient_array(fh, h, dnext_h)\n",
    "dWx_num = eval_numerical_gradient_array(fWx, Wx, dnext_h)\n",
    "dWh_num = eval_numerical_gradient_array(fWh, Wh, dnext_h)\n",
    "db_num = eval_numerical_gradient_array(fb, b, dnext_h)\n",
    "\n",
    "dx, dprev_h, dWx, dWh, db = rnn_step_backward(dnext_h, cache)\n",
    "\n",
    "print('dx error: ', rel_error(dx_num, dx))\n",
    "print('dprev_h error: ', rel_error(dprev_h_num, dprev_h))\n",
    "print('dWx error: ', rel_error(dWx_num, dWx))\n",
    "print('dWh error: ', rel_error(dWh_num, dWh))\n",
    "print('db error: ', rel_error(db_num, db))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Vanilla RNN: forward\n",
    "Now that you have implemented the forward and backward passes for a single timestep of a vanilla RNN, you will combine these pieces to implement a RNN that process an entire sequence of data.\n",
    "\n",
    "In the file `cs231n/rnn_layers.py`, implement the function `rnn_forward`. This should be implemented using the `rnn_step_forward` function that you defined above. After doing so run the following to check your implementation. You should see errors less than `1e-7`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "h error:  7.72846615101e-08\n"
     ]
    }
   ],
   "source": [
    "N, T, D, H = 2, 3, 4, 5\n",
    "\n",
    "x = np.linspace(-0.1, 0.3, num=N*T*D).reshape(N, T, D)\n",
    "h0 = np.linspace(-0.3, 0.1, num=N*H).reshape(N, H)\n",
    "Wx = np.linspace(-0.2, 0.4, num=D*H).reshape(D, H)\n",
    "Wh = np.linspace(-0.4, 0.1, num=H*H).reshape(H, H)\n",
    "b = np.linspace(-0.7, 0.1, num=H)\n",
    "\n",
    "h, _ = rnn_forward(x, h0, Wx, Wh, b)\n",
    "expected_h = np.asarray([\n",
    "  [\n",
    "    [-0.42070749, -0.27279261, -0.11074945,  0.05740409,  0.22236251],\n",
    "    [-0.39525808, -0.22554661, -0.0409454,   0.14649412,  0.32397316],\n",
    "    [-0.42305111, -0.24223728, -0.04287027,  0.15997045,  0.35014525],\n",
    "  ],\n",
    "  [\n",
    "    [-0.55857474, -0.39065825, -0.19198182,  0.02378408,  0.23735671],\n",
    "    [-0.27150199, -0.07088804,  0.13562939,  0.33099728,  0.50158768],\n",
    "    [-0.51014825, -0.30524429, -0.06755202,  0.17806392,  0.40333043]]])\n",
    "print('h error: ', rel_error(expected_h, h))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Vanilla RNN: backward\n",
    "In the file `cs231n/rnn_layers.py`, implement the backward pass for a vanilla RNN in the function `rnn_backward`. This should run back-propagation over the entire sequence, calling into the `rnn_step_backward` function that you defined above. You should see errors less than 5e-7."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dx error:  1.53357269052e-09\n",
      "dh0 error:  3.37868252725e-09\n",
      "dWx error:  7.33380080393e-09\n",
      "dWh error:  1.31959421148e-07\n",
      "db error:  2.64530726345e-10\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "\n",
    "N, D, T, H = 2, 3, 10, 5\n",
    "\n",
    "x = np.random.randn(N, T, D)\n",
    "h0 = np.random.randn(N, H)\n",
    "Wx = np.random.randn(D, H)\n",
    "Wh = np.random.randn(H, H)\n",
    "b = np.random.randn(H)\n",
    "\n",
    "out, cache = rnn_forward(x, h0, Wx, Wh, b)\n",
    "\n",
    "dout = np.random.randn(*out.shape)\n",
    "\n",
    "dx, dh0, dWx, dWh, db = rnn_backward(dout, cache)\n",
    "\n",
    "fx = lambda x: rnn_forward(x, h0, Wx, Wh, b)[0]\n",
    "fh0 = lambda h0: rnn_forward(x, h0, Wx, Wh, b)[0]\n",
    "fWx = lambda Wx: rnn_forward(x, h0, Wx, Wh, b)[0]\n",
    "fWh = lambda Wh: rnn_forward(x, h0, Wx, Wh, b)[0]\n",
    "fb = lambda b: rnn_forward(x, h0, Wx, Wh, b)[0]\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(fx, x, dout)\n",
    "dh0_num = eval_numerical_gradient_array(fh0, h0, dout)\n",
    "dWx_num = eval_numerical_gradient_array(fWx, Wx, dout)\n",
    "dWh_num = eval_numerical_gradient_array(fWh, Wh, dout)\n",
    "db_num = eval_numerical_gradient_array(fb, b, dout)\n",
    "\n",
    "print('dx error: ', rel_error(dx_num, dx))\n",
    "print('dh0 error: ', rel_error(dh0_num, dh0))\n",
    "print('dWx error: ', rel_error(dWx_num, dWx))\n",
    "print('dWh error: ', rel_error(dWh_num, dWh))\n",
    "print('db error: ', rel_error(db_num, db))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Word embedding: forward\n",
    "In deep learning systems, we commonly represent words using vectors. Each word of the vocabulary will be associated with a vector, and these vectors will be learned jointly with the rest of the system.\n",
    "\n",
    "In the file `cs231n/rnn_layers.py`, implement the function `word_embedding_forward` to convert words (represented by integers) into vectors. Run the following to check your implementation. You should see error around `1e-8`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "out error:  1.00000000947e-08\n"
     ]
    }
   ],
   "source": [
    "N, T, V, D = 2, 4, 5, 3\n",
    "\n",
    "x = np.asarray([[0, 3, 1, 2], [2, 1, 0, 3]])\n",
    "W = np.linspace(0, 1, num=V*D).reshape(V, D)\n",
    "\n",
    "out, _ = word_embedding_forward(x, W)\n",
    "expected_out = np.asarray([\n",
    " [[ 0.,          0.07142857,  0.14285714],\n",
    "  [ 0.64285714,  0.71428571,  0.78571429],\n",
    "  [ 0.21428571,  0.28571429,  0.35714286],\n",
    "  [ 0.42857143,  0.5,         0.57142857]],\n",
    " [[ 0.42857143,  0.5,         0.57142857],\n",
    "  [ 0.21428571,  0.28571429,  0.35714286],\n",
    "  [ 0.,          0.07142857,  0.14285714],\n",
    "  [ 0.64285714,  0.71428571,  0.78571429]]])\n",
    "\n",
    "print('out error: ', rel_error(expected_out, out))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Word embedding: backward\n",
    "Implement the backward pass for the word embedding function in the function `word_embedding_backward`. After doing so run the following to numerically gradient check your implementation. You should see errors less than `1e-11`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dW error:  3.27745956931e-12\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "\n",
    "N, T, V, D = 50, 3, 5, 6\n",
    "x = np.random.randint(V, size=(N, T))\n",
    "W = np.random.randn(V, D)\n",
    "\n",
    "out, cache = word_embedding_forward(x, W)\n",
    "dout = np.random.randn(*out.shape)\n",
    "dW = word_embedding_backward(dout, cache)\n",
    "\n",
    "f = lambda W: word_embedding_forward(x, W)[0]\n",
    "dW_num = eval_numerical_gradient_array(f, W, dout)\n",
    "\n",
    "print('dW error: ', rel_error(dW, dW_num))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Temporal Affine layer\n",
    "At every timestep we use an affine function to transform the RNN hidden vector at that timestep into scores for each word in the vocabulary. Because this is very similar to the affine layer that you implemented in assignment 2, we have provided this function for you in the `temporal_affine_forward` and `temporal_affine_backward` functions in the file `cs231n/rnn_layers.py`. Run the following to perform numeric gradient checking on the implementation. You should see errors less than 1e-9."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "dx error:  5.27894217902e-10\n",
      "dw error:  1.577204836e-10\n",
      "db error:  4.20071628784e-11\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "\n",
    "# Gradient check for temporal affine layer\n",
    "N, T, D, M = 2, 3, 4, 5\n",
    "x = np.random.randn(N, T, D)\n",
    "w = np.random.randn(D, M)\n",
    "b = np.random.randn(M)\n",
    "\n",
    "out, cache = temporal_affine_forward(x, w, b)\n",
    "\n",
    "dout = np.random.randn(*out.shape)\n",
    "\n",
    "fx = lambda x: temporal_affine_forward(x, w, b)[0]\n",
    "fw = lambda w: temporal_affine_forward(x, w, b)[0]\n",
    "fb = lambda b: temporal_affine_forward(x, w, b)[0]\n",
    "\n",
    "dx_num = eval_numerical_gradient_array(fx, x, dout)\n",
    "dw_num = eval_numerical_gradient_array(fw, w, dout)\n",
    "db_num = eval_numerical_gradient_array(fb, b, dout)\n",
    "\n",
    "dx, dw, db = temporal_affine_backward(dout, cache)\n",
    "\n",
    "print('dx error: ', rel_error(dx_num, dx))\n",
    "print('dw error: ', rel_error(dw_num, dw))\n",
    "print('db error: ', rel_error(db_num, db))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Temporal Softmax loss\n",
    "In an RNN language model, at every timestep we produce a score for each word in the vocabulary. We know the ground-truth word at each timestep, so we use a softmax loss function to compute loss and gradient at each timestep. We sum the losses over time and average them over the minibatch.\n",
    "\n",
    "However there is one wrinkle: since we operate over minibatches and different captions may have different lengths, we append `<NULL>` tokens to the end of each caption so they all have the same length. We don't want these `<NULL>` tokens to count toward the loss or gradient, so in addition to scores and ground-truth labels our loss function also accepts a `mask` array that tells it which elements of the scores count towards the loss.\n",
    "\n",
    "Since this is very similar to the softmax loss function you implemented in assignment 1, we have implemented this loss function for you; look at the `temporal_softmax_loss` function in the file `cs231n/rnn_layers.py`.\n",
    "\n",
    "Run the following cell to sanity check the loss and perform numeric gradient checking on the function. You should see an error for dx less than 1e-7."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.30277817743\n",
      "23.0259859531\n",
      "2.26436117903\n",
      "dx error:  2.58358530352e-08\n"
     ]
    }
   ],
   "source": [
    "# Sanity check for temporal softmax loss\n",
    "from cs231n.rnn_layers import temporal_softmax_loss\n",
    "\n",
    "N, T, V = 100, 1, 10\n",
    "\n",
    "def check_loss(N, T, V, p):\n",
    "    x = 0.001 * np.random.randn(N, T, V)\n",
    "    y = np.random.randint(V, size=(N, T))\n",
    "    mask = np.random.rand(N, T) <= p\n",
    "    print(temporal_softmax_loss(x, y, mask)[0])\n",
    "  \n",
    "check_loss(100, 1, 10, 1.0)   # Should be about 2.3\n",
    "check_loss(100, 10, 10, 1.0)  # Should be about 23\n",
    "check_loss(5000, 10, 10, 0.1) # Should be about 2.3\n",
    "\n",
    "# Gradient check for temporal softmax loss\n",
    "N, T, V = 7, 8, 9\n",
    "\n",
    "x = np.random.randn(N, T, V)\n",
    "y = np.random.randint(V, size=(N, T))\n",
    "mask = (np.random.rand(N, T) > 0.5)\n",
    "\n",
    "loss, dx = temporal_softmax_loss(x, y, mask, verbose=False)\n",
    "\n",
    "dx_num = eval_numerical_gradient(lambda x: temporal_softmax_loss(x, y, mask)[0], x, verbose=False)\n",
    "\n",
    "print('dx error: ', rel_error(dx, dx_num))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# RNN for image captioning\n",
    "Now that you have implemented the necessary layers, you can combine them to build an image captioning model. Open the file `cs231n/classifiers/rnn.py` and look at the `CaptioningRNN` class.\n",
    "\n",
    "Implement the forward and backward pass of the model in the `loss` function. For now you only need to implement the case where `cell_type='rnn'` for vanialla RNNs; you will implement the LSTM case later. After doing so, run the following to check your forward pass using a small test case; you should see error less than `1e-10`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:  9.83235591003\n",
      "expected loss:  9.83235591003\n",
      "difference:  2.60769184024e-12\n"
     ]
    }
   ],
   "source": [
    "N, D, W, H = 10, 20, 30, 40\n",
    "word_to_idx = {'<NULL>': 0, 'cat': 2, 'dog': 3}\n",
    "V = len(word_to_idx)\n",
    "T = 13\n",
    "\n",
    "model = CaptioningRNN(word_to_idx,\n",
    "          input_dim=D,\n",
    "          wordvec_dim=W,\n",
    "          hidden_dim=H,\n",
    "          cell_type='rnn',\n",
    "          dtype=np.float64)\n",
    "\n",
    "# Set all model parameters to fixed values\n",
    "for k, v in model.params.items():\n",
    "    model.params[k] = np.linspace(-1.4, 1.3, num=v.size).reshape(*v.shape)\n",
    "\n",
    "features = np.linspace(-1.5, 0.3, num=(N * D)).reshape(N, D)\n",
    "captions = (np.arange(N * T) % V).reshape(N, T)\n",
    "\n",
    "loss, grads = model.loss(features, captions)\n",
    "expected_loss = 9.83235591003\n",
    "\n",
    "print('loss: ', loss)\n",
    "print('expected loss: ', expected_loss)\n",
    "print('difference: ', abs(loss - expected_loss))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Run the following cell to perform numeric gradient checking on the `CaptioningRNN` class; you should errors around `5e-6` or less."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "W_embed relative error: 2.331069e-09\n",
      "W_proj relative error: 9.974427e-09\n",
      "W_vocab relative error: 4.274378e-09\n",
      "Wh relative error: 5.954802e-09\n",
      "Wx relative error: 1.832004e-06\n",
      "b relative error: 9.727211e-10\n",
      "b_proj relative error: 6.827989e-09\n",
      "b_vocab relative error: 2.109272e-10\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "\n",
    "batch_size = 2\n",
    "timesteps = 3\n",
    "input_dim = 4\n",
    "wordvec_dim = 5\n",
    "hidden_dim = 6\n",
    "word_to_idx = {'<NULL>': 0, 'cat': 2, 'dog': 3}\n",
    "vocab_size = len(word_to_idx)\n",
    "\n",
    "captions = np.random.randint(vocab_size, size=(batch_size, timesteps))\n",
    "features = np.random.randn(batch_size, input_dim)\n",
    "\n",
    "model = CaptioningRNN(word_to_idx,\n",
    "          input_dim=input_dim,\n",
    "          wordvec_dim=wordvec_dim,\n",
    "          hidden_dim=hidden_dim,\n",
    "          cell_type='rnn',\n",
    "          dtype=np.float64,\n",
    "        )\n",
    "\n",
    "loss, grads = model.loss(features, captions)\n",
    "\n",
    "for param_name in sorted(grads):\n",
    "    f = lambda _: model.loss(features, captions)[0]\n",
    "    param_grad_num = eval_numerical_gradient(f, model.params[param_name], verbose=False, h=1e-6)\n",
    "    e = rel_error(param_grad_num, grads[param_name])\n",
    "    print('%s relative error: %e' % (param_name, e))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Overfit small data\n",
    "Similar to the `Solver` class that we used to train image classification models on the previous assignment, on this assignment we use a `CaptioningSolver` class to train image captioning models. Open the file `cs231n/captioning_solver.py` and read through the `CaptioningSolver` class; it should look very familiar.\n",
    "\n",
    "Once you have familiarized yourself with the API, run the following to make sure your model overfit a small sample of 100 training examples. You should see losses of less than 0.1."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(Iteration 1 / 100) loss: 76.913486\n",
      "(Iteration 11 / 100) loss: 21.063185\n",
      "(Iteration 21 / 100) loss: 4.016229\n",
      "(Iteration 31 / 100) loss: 0.567075\n",
      "(Iteration 41 / 100) loss: 0.239427\n",
      "(Iteration 51 / 100) loss: 0.162012\n",
      "(Iteration 61 / 100) loss: 0.111546\n",
      "(Iteration 71 / 100) loss: 0.097564\n",
      "(Iteration 81 / 100) loss: 0.099086\n",
      "(Iteration 91 / 100) loss: 0.073976\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1QAAAK9CAYAAAAjXS2jAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XuYZXV95/vPl5vNtYEuuak0rY3aPZI23R4VMMaJlxYn\nGiEXbYlOTg5jnEQlJJmYTMzEo5lRyUlwYkweZ8wkMcZ2TKIxIsp4iREvw0RaJSqKICAXaQGlCSD3\n3/lj7daibOiq3btq7dr79Xqeeja19tp7f6ssg++stX6rWmsBAABg4fbqewAAAIDlSlABAAAMSVAB\nAAAMSVABAAAMSVABAAAMSVABAAAMSVABAAAMSVABAAAMSVABAAAMSVABTLmqekxV3VdVPzPEax8y\neO2vL8Zsu/nsoedeTFX1v6vq/8xjv7GcH4CFEVQAY2bwP7J393VvVT11hB/b9vC1e/L6SbOQ38WC\nf29V9YqqOn2hrwNgcezT9wAA/ICfnfP9v03yjMH2mrX9klF8WGvtq1W1f2vtriFee2dV7Z/k7lHM\nMk324Pf+yiRfS/JXizAWAAskqADGTGvtnbO/r6oTkzyjtbZ1Pq+vqhWttTsW+JkLjqlRvHbajcvv\nbpi/GQA6TvkDWMaqavPgFMBTq+qNVXVtklurar+qmqmqc6rqi1V1a1XdXFXvr6r1c97jB67lqap3\nVdUNVfWIqjq3qv6lqrZX1X+e89ofuIaqqt4w2PaIqnrH4HO/XVVvrar95rz+gKr646q6qapuqaq/\nqarVe3Jd1uB38umqum3wuX9bVWvn7LOyqv6oqq6sqjsGP9uHqupfzdrnsVX1d1V1fVV9t6q+Mfh5\n9p/nHCdU1T9W1e1VdXVVnTnn+V393h9WVX9ZVdcM5rquqt5TVccMnv9mkkcmefas0z/Pm/X6tYP9\nvzP4+T9VVc/cxe9nV38zjx1s/4Vd/Cw/NnjuJ+bzswNME0eoACbD65LcluSNSQ5Mcm+SxyR5dpK/\nSXJVkqOTvCzJx6tqfWvtxgd5v5Zk3yQfTvLxJL82eK/fqKpLW2t/sZvXtiR/l+TSJK9K8sQkZyS5\nLsn/O2vfrUl+PMn/SHJRulMb/y5DXpNVVc9J8vfpTod8dZKDk5yZ5FNV9cOttesGu/6Pwc/zh4MZ\nZ5I8Nd3v7EtVtWLws9+X5Jwk30ryiCTPS3JQku/uZpQjkpyX5F1J3pnkhUn+oKo+31r7xwd53d8n\nWT2Y6xtJjkqyOcnD0v3ufjHJHye5PsnZ6U4BvW7wsz8syWfS/T9L35RkR5KfT3JeVT23tfahOZ81\n+2/mgCSXpfvP4PQkb52z7+lJvp3kA7v5uQGmT2vNly9fvnyN8VeSNye59wGe25zuf/R/Kck+c57b\nbxf7r01yZ5JfnbXtMYP3+JlZ27ami7JfmfP6Lyb5xKzvHzJ47a/P2vb6wbY/nPPaDyT5xqzvTxzs\n97tz9nvn4LN/fVc/827mviRdiBw0a9umwfv9yaxttyU5+0He+0mD9z5liP+8PjP4vNNmbVuR5IYk\nb3+g+ZMcOfj+F3fz/l9Lct4utv9JknuSbJy17ZAkVyf58jz/Zl4xeI/Vc/4z/k6St/T93wVfvnz5\nGscvp/wBTIb/0Vq7Z/aGNuv6nKrau6oOT3JzkiuSbJzn+/63Od9/Mt0pZ7vT8oNHOS5IckxV7Tv4\n/tmD/f5kzn5vzv0X35iXqjouXaS8rbV26/cGae2iJJ9I8m9m7X5LkhOr6sgHeLubB4+nVNVDFjpL\nkm+31t4za4Y70h39ebDf3a3pQuzHquqQIT7zlCQXtNa2zfrcW5K8LcljqmruZ//A30y+H9IvmrXt\nuenC7B1DzAQw8QQVwGS4cu6Gqtqrqn69qi5Pd1TqxnSnrh2fZOU83vPm2WEy8J0kh81zpm/s4rWV\n5NDB96uT3Nlau3bOfpfN8/3nWj14vHQXz12S5GFVtfPfe7+W5AlJrqmqz1TVb1fVztentfbVJG9J\n8ktJbqqq86rqZVV10DxnmfuzJ7v53bXWbkvyW0l+Ism3quofqupXquqhu/uwqqp0pyR+dRdP71wN\ncvWc7VfuYoYbk3wo3Sl+O52e5IrW2md2NwfANBJUAJNhV9f0vDbJG5Kcn2RLkmelu0bpsszv//7f\n+wDb53v0aE9fv2haa3+V5FFJfjnJ9nTXeX2pqv71rH1ekeSH0/0OD0oXWBdX1RHz+IihfvbW2tlJ\nHpsurO5O8l+SfHnuQiIj8kDXgb09ybqqenxVHZruyJejUwAPQFABTK6fTHetzS+21v66tfaR1trH\nkhze92ADVyV5yGAxhdmO34P3S7rT/uZ6bJJrW2v37dzQWruutfaW1trz08XVrUl+c/aLWmsXt9Z+\nt7X21CRPT3JcusU1Fk1r7fLW2u+31p6VZEO6hTV+efYuu3hNS3et1K5+9nWDx6t28dyuvD/dghan\n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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x73674a8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "np.random.seed(231)\n",
    "\n",
    "small_data = load_coco_data(max_train=50)\n",
    "\n",
    "small_rnn_model = CaptioningRNN(\n",
    "          cell_type='rnn',\n",
    "          word_to_idx=data['word_to_idx'],\n",
    "          input_dim=data['train_features'].shape[1],\n",
    "          hidden_dim=512,\n",
    "          wordvec_dim=256,\n",
    "        )\n",
    "\n",
    "small_rnn_solver = CaptioningSolver(small_rnn_model, small_data,\n",
    "           update_rule='adam',\n",
    "           num_epochs=50,\n",
    "           batch_size=25,\n",
    "           optim_config={\n",
    "             'learning_rate': 5e-3,\n",
    "           },\n",
    "           lr_decay=0.95,\n",
    "           verbose=True, print_every=10,\n",
    "         )\n",
    "\n",
    "small_rnn_solver.train()\n",
    "\n",
    "# Plot the training losses\n",
    "plt.plot(small_rnn_solver.loss_history)\n",
    "plt.xlabel('Iteration')\n",
    "plt.ylabel('Loss')\n",
    "plt.title('Training loss history')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Test-time sampling\n",
    "Unlike classification models, image captioning models behave very differently at training time and at test time. At training time, we have access to the ground-truth caption, so we feed ground-truth words as input to the RNN at each timestep. At test time, we sample from the distribution over the vocabulary at each timestep, and feed the sample as input to the RNN at the next timestep.\n",
    "\n",
    "In the file `cs231n/classifiers/rnn.py`, implement the `sample` method for test-time sampling. After doing so, run the following to sample from your overfitted model on both training and validation data. The samples on training data should be very good; the samples on validation data probably won't make sense."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true,
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "http://farm8.staticflickr.com/7059/6886541913_9221770312_z.jpg\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0EAAALSCAYAAAAbeNqAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3Xe4I1d9P+DPl2KK6T0QejGEEgKh/ui9d0wNzYReQkIn\nCSSEngRiTOjVDqaH3kwLYJtmCC10MNVgAwaDMW19fn+cubZWK92rvbvrdt73efTs3tHozNFoJM1n\nTlG11gIAADCKU53YFQAAADghCUEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEA\nAEMRggAAgKEIQQCcrFTVoVX1ihO7HgCcfAlBAOx0VXWNqnpyVZ1lFxR/bJK2C8oFYBDVmu8RAHau\nqvq7JM9OctHW2vd2ctmnTXJsa23LziwXgHFoCQJgV6iVVupOtz0Ft9b+IAABsCOEIAB2qqp6cnor\nUJIcWlXHVtWWqrrw9P+9q+ruVfWlJL9NctPpcY+uqgOr6qdV9Zuq+kxV3XFB+VuNCaqqe0/lXrOq\n/r2qDq+qX1fVW6rqnCfEcwbg5OU0J3YFADjFeXOSSyW5a5JHJvlZ+hieI6b7b5hkzyT7JPlpkkOn\n5Y9I8rYk+yXZbXr8G6rqVq2198yUv6wf9/OT/DzJU5JcJMmjpm3cbcefEgCnJEIQADtVa+1LVfXZ\n9BDzttkxQVWV9IB0udba1+YeesnW2u9m1t0nyeeS/G2S92RjR7TWbjbz+FMneXhVnbm19qtNPyEA\nTnF0hwPghPaRBQEocwHobEnOnuRjSa60QpktyUvmln0syamTXHjzVQXglEhLEAAntEMXLayqWyV5\nUpIrJpmdLOHYFcv9/tzfR07/nn17KgfAKZ+WIABOaMfML6iqa6ePB/pNkgcnuXmSGyV5bVacaS7J\nshnjVn08AIPQEgTArrC9P0J3h/RwdNPW2h/XFlbVXju1VgAQLUEA7BpHT/+ebcX1t6QHp+MuzlXV\nRZLcdqfWCgAiBAGwaxyS3g3t6VV1z6q6S1WdcZ3135Vk9yTvq6oHVtU/JvlEkm+suL1lXd50hQNg\nG0IQADtda+0zSf4+yRWSvDLJfyU5d3przzZd5VprH05yvyTnTfLcJHdJ8tgkb11U/IIylnW/295u\neQAMoFrz/QAAAIxDSxAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQcDJVlXdtKqO\nraqrnth12V5VtcdU94eciHV4XVV95QTc3umm5/zsE2qbp0TT63bEiV2PNVV1/qp6a1X9rKq2VNUD\npuWXrqoPVtUvp+U32Z4yduT9XVWfqKp378jzAk7ZhCDYhKq6fFW9qaoOrapjquoHVfX+qnrYdP+T\npy/vjW4fWlD2W6b7nrpk2zecK+OPVfXjqnpDVV1qZr2brliH3+y6PXWCOEn/2FlV3bqqnnQCbeva\n07F3xhUf0pIcuyvrdFJSVQ+vqnusuO6Zp315zZ1chwtO5f7ZDhSz8AdnT0T7JLlOkn9O8ldJPjgt\nf22SSyR53LT885soY7PP86S2jzY0fY4v+5x+y8x6z5iWfa+qTruknDfM/H26ubL+UFU/rapPVdW/\nzX5vwEhOc2JXAE5uppOiDyX5bpKXJPlxkgsmuXqSR6R/mb85yTdmHnamJC9K8pbptuYnc2WfNcnN\nk3wnyd2T/MM6Vfn3JJ9NsluSP0/ywCTXrarLttZ+mn7Ccc+5x/zbVN9nJ6lp2ZaNnjM75DZJ7pHk\naSfAtq6T5B+TvDDJKuH2njn+OBjBI9Lfl/+1wrpnSfLkJMckOWgn1uFCU7lfSfJ/O7HcE9P1k7yh\ntfYfawumz7IrJnlSa+1FmyzjEjtQp2vnZBaC0uv7qSR7L7jv+wuWXSDJ/dPf7/PlLPKuJPunv+fP\nlv767JXkYVX1qNbaf26m0nByJQTBBqrqgkmOaq39clr0pCS/SPKXrbVfza17riRprX0pyZdmlp8z\nPQR9obX22nU2t+f0715JPlRV12itHbxk3Y+21t4+s41vpn953jPJ81prP06/Ejtbv39Kclhrbf8F\nz/M8U90PX6d+bL8TMmRs17ZaawLwcrvqdTtFhc6q2i3JWZP8cu6u807/zi/fnjI2rbX2x51V1q5Q\nVadOcsnW2lfn7vreBt8Rs/43yeOr6qUrPt+vzJddVU9I8u4ke1fVV1prH56WV5JLt9ZOsO6ycELT\nHQ4WqKrTVtWdquq9Sb6d5MIzd18syZfnA1CSTC0wO+LuSd7TWvtIkq+ntyCs6mPpJ1gX3+S2/yLJ\n96vqzVV1i6ra9OdDVZ2+qv6lqg6ZxgP8qqo+XFX/b8XHr3Xvu0VVfX7qcvjFqrrVCo+9/tRV8XtV\n9dupy+KzphOt2fVeV1VHTN2T3jnV8SdVtU2LTVWdqqoeXVX/N5V5WFXtU1Vn3qAu+ye5X5LZ7ijb\ntNBU1UOq6lvT8zyoqv587v6/qKrXVNW3p3V+VFUvnq62r63zjPSuREmy1q1my1q4XVK/bcYEVdW9\nquqz0/74xbT/H7ze85we94Sp7j+rqt9U1Ser6jbrrH+fqvr69Hw+WVVXX7DOVarqgKo6arq9v6qu\nPLfOM6vqmAWPfdC0D84z/X1Y+nv3ZjOvxcIxI1W1R5LvpV9Rf+bM+o+dWeem0/M9uqp+Pr1v1m25\nqKqbJvnoVO7rZl6jPaf7Vzp2l5R9lWnfv7eqTjez/NZVdWBV/Xp6Pd9aK3Z/qqpLVO+ee+T0PA+s\nqhvP3P/AJL+dns+j147v6Vj86rR8n2n5wlavZWUsWfeZ0/FylgX3vaaqDq8eLrYZE1THdw++TVU9\npap+ONX1fVV14QXl/U1VfWda56Cqutp8mZtRVZeqqmcl+UF6q+1mtfT3+wXTW4M2V0j/zrrb9OcT\nZ+7aLcmXp+e+V1XtvumawkmUEAQzquqyVfXvSX6Y5PXpXVeekK27tn03yZWr6rI7edt/mt6daa2V\n5nVJ9lz7Ul/BRad/j9xkFT6V5OnpYegdSb5bVU+tqottoqxzJrlXer/+R6d/WZ8/yQFVdekVHt+S\nXC7Jvknelv4aVJK3VNW1NnjsXdJbufdJ8vCpDn+X5KULtnHaJAekn5A8Or3b0+Or6t5z6746yVPT\nu0E+fPr7vkneVVXrXdl/fpKPJPlDeqC95/S4WXsleWiSF6SfFF0qyZvmyr15+v57WZKHJXlD+v59\n28w6+yd50/T/h0zb+qv0Vstltho3UVW3TvKqJIel748npIfra6xTxppHJvl0ekvpE9K/X95SVTdY\nsO5N04+1V6V3DTtfkvfNhoiq+ov0fXep9K6ET5v+/9HaOiQuG/sxv/whSQ5P7ya69losm6DhR+mv\nc6W/D+853d4x1e0W6V2Lzpzk75M8L8n1khxYVedfUmambT91KnefHP8arbX2rnrsbqX6xYUDknw8\nya1ba7+blt8//Rg5Isljc/z7++NV9ScblHmBqV7XnZ7fk6bn++6qutm02gfSj+ea9sfa8b1/ksdM\ny189LX/Mkk0tK2ORfdNPzu80V9czJLldktfNtG4u6xL25CQ3SfLM9Nf/2unH4Wx5j0rvbvzN9PfB\nwemv/bmXlLmuqjrDFPo/mh4OH5r+ej13weq7VdU5F9xOt2DdA9I/s55QVZvu2dNa+1b6c7z22nam\nY+hB6e/jl6RfWHlZVa3yWQAnD601N7ehb+njde6f/iVwbPpJ44uTXG3J+jdK8vv0E9sD079Mb5zk\nNOts45xT2f+4zjqPS/KrJGeY/r709JhbzK13w2n5PaZyz5fkZulf2H9IcsV1tvGNJO9eYZ/cIMl+\nSY5OHzP0wfRWqtOtuE9PleTUc8vOnuSnSZ6/wuMPm7Z705llZ0s/if34zLKbTutddWbZNnVMP/H5\nQ5Jzzyzbf3rs386t+6X0roazr/exSW47t96tp+W32+C5vDTJbxYs32N6/A+T7D6z/M5TvW6wwXO6\n97TelWeWPWladp4VX6f9k/zfzN8vTPLjTb6PTjf392nTT/jeMbvO9Jz/kOQyM8svluR3SfabWfae\nJL9Ocv6ZZX86HZPvmVn2jCX794Hz+2LV439a9wJTXR+74L6vpLcUnWlm2ZWn7b1wg3L/31Tunhvt\nww2O3cOn/18//XPjjZn5DErvXnZUkufOlXf+afnzNqjnC5P8McmVZpadJX1syuwxs/aaPnvJ8f2Q\nVY6dJWUsen8fkuRDc+vdbcF6B8++1lNZx6aPozz1zPLHTI+92PT36dO/A/4nSc2s94Dp8SsdP9Nj\nrpL+XfLLaRsHJ/nrJGdesv7a596xc7ctSR4xd8xvSXLG9O+eY5M8cK6cN2y0fxe83luSXGLBfZdJ\n8q/p40mPTR/L9nezx6Sb28nxpiWIYVXVeavqFelfGC9KH0h+ryTna609sLX2yUWPa619IP3K+NuS\nXCH9S/R9SX44XUnfrLsneVtr7ZhpO1/N8VetF3lN+hXeH6X36d49yT1aa/+7A3XItO0PtdbumeRP\n0q9anik9FB1WVc+vqjNt8Phj23RFtrqzJzl1+gnIlVasxndaa++bKfMX6QPar1Ez3cAWbPt3a/+v\nqjNWH491UHowu+KCh7xk7u+Pp5+Ur7lTpvA1e2U2ySfTw/D1V3w+y/xXa+3omb/XujUeV4e553T6\nme1XVt+fq/hFkrMuab1Z11wdz5Z+En5gFtfvI21mrEFr7dvpx/DNp8fvlh7E39Ba+9HMej9IbwW7\nwSpdxHaFqrpI+gn+y1prv56p2yHpXd1uudmyt/fYrT7l9DuTvD3JXdrW40Jukf6Z8Lq54/b36UFi\no+P25kk+1lr77Ez9jkpvjdxjky3EO8Nrklxnaqlac48k32ytfWqFx7+sbT0Wbv79do30sPfi1tps\na9Ir0wP4hqrq3lX1hfT36K3Tv18u21q7RmvtpW1BV+q5+tww/eLL2u3G6ZPtbKO1tlNag9IvOCS9\ntW9+G19prT06/cLA7dMvJjw9yQ+qd99cpXUfTnKEIEZ26ST3Se9e8dgkN2mt7dda++1GD2ytHdJa\nu1N668ZV078QzpTkjZv5QqiqKyS5fJKDq+ria7f07kC3qcVTHv9j+hfk7dIDylmzk6c7bq0d1frM\nTtdL7zpy1vRuRet1+UnSu+JU1ZfSr/D/LD1I3GgqYxXfWLDs69O/2/Thn9nuRapqv6r6efoX+xHp\nITULtv2L2RPZyZHpr+uaSyY5z1TO7O3H6a0dS8fcrGh+1qe17ozH1aGqzlVVL6iqn6SH9SPSr8a2\nrL4/V/H89O6eB1TVd6vqpVV1o1UeWFW3rz7l7jFJfp7+et93Sf2+uWDZ15OcbRrv8Sfp+/brC9b7\nSnqXsQssuO+EsHbsLavbBWqT4+m289g9a/qFmIOS3LO1Nv/ev0T6yf3B2fq4PTy92+16Y8UqfazJ\n1xbcvRZel74Hd7HXpn/O3S05btKZm6R3lVvFRu+3C6e/r741u1Jr7Q/prX+reFCSy6aHoGu11h7X\ntp0AYZnDW2sfni5Ezd5+uM5j/im96/ZeK25jkbULW0sDWmttS2vtbenfOfdL/2y/ffrxBCc7Zodj\nZJ9Ob+XYK8lz0seC7Jfkla21L65SwHTl9ZAkh1TVN9KvFt45vd//9lhr7dk7284e1dK/aOan9f1i\na23td4bePrXOvLyqPt76zHA7rPpg9fulz1p35vQTrpelTxax3uPun97C8ob0sRw/Te9q8eRssl/9\nivU9Tfq4ndMn+Zf0E9XfJLlIere0+ZPTZbOjzb4Gp0o/cbpPtn1tkrlpzjdhlTq8NT0kPzvJF9Ov\nSJ8+fZzCTruY1Vr7UVVdPr0V4GbTv3tV1Ytba0snR6g+WP7N6WMUHpgeEP+YfjK44WQWO1rtJctX\nHUt3krCJY/fX6S1PN0u/uHDA3P2nSt83e2bxOMHf76Sqn6Baa0dU1fvSxw79a5K7pr/Wq0x7nqz2\nfttRj0jy4PTvgm9U/z24VyZ5yyoX2bZXa+2Aqjo4vTXoFZss5nLpx8TSoDe1gt43vSvuhdIvZrw8\nS1qp4KROCGJYrbXfpPeDfmFVXTF9XNB9kvxNVX02/Uvrta21VSca+Mz077oDjpe4a/pJzIsX3PeU\n9JC00Zf849Kv0j4x/Ut4U6rqvOlfcvdJby07fKrXK1pri64ML3LH9Bn07jpX9rKB6ItccsGyPaZ/\nv7vkMVdOP2m8c2vtuC/m6rPKbfYk51vprX0fa5ubdneHfqtkej2umeQxrbV/m1l+uZ29reS4K95v\nTw/WlX6S84Cqeups17Q5d0gf93Dz2RaJqnrokvUXvbaXSm+ZO6qqfps+DmaPBetdJj1grV0ZPzJ9\n9r3dWmuzJ/YXWfT0ltRnkWXrrh17i+p26SQ/XNAqs0q523vsbkkPOO9J8t9VdeO29XT6ay0ZP2mt\nfXyd+mxbwdZaVX0/y/d/svw9eEJ4TXo3v8uldyM+uLX2nZ1U9nfT9/cl0ltykvQZQ9NP/Dd83q21\nTyf5dFU9Ir3F6v7pLVX/WVWvS7/QtrC79Q74p/Rj4X7b+8BpQpJrJPnA3HtobdKJO6WHn+umz+T3\n5iQvb639z45WGk5MusNBktba/7bWHpYeYO6V3iVg7yQ/qqrXT10ukiRVdb0lxayNBVi128NseRdM\n/1J5y/wtfcDzjapqtgVlmxOp1to30lsM7jdb3+2ox0Wq6h3pM6U9Lf0HW++Y5AJTd45VA1DST9C2\nOnGrqutk+8avXLSqbj7z+LPn+BOeZb8nsnaV97jPtulE/pHZfEB4Q5IzpM94tpWqOk0tmK53ztHp\nJ+mLZndaxTbPafKobPuc1sYsnG0zG6qqc8z+PY2JWPu9q/XqvzaY+7jWl6q6ZPq4lEWuWzOzK05d\nP2+RfhKX6UTsg0nuVDOzrU3jQO6c5IMzJ2vfSj/WrjOz3lmyeCzd0Vl93yzcl621Q9Pf4/ebHRtX\nVVdKP0l852bKzSaO3Smw3jbJF9JnbZudNe/d6S1Jf18LZphc4TPi3emzhR03Fmnar/dP8tVpHNeJ\n5e3pkzv8Y/rJ+6pd4Vb5DDh4KvuB0/5fc7/0MVYra639ehoDdLX0H7R+Vfpn6sHVp9u/y/aUt8G2\n3p8e2p6Q7bjAPX2vrM1I+vSZ5aeqqpemt+q+Kv14fXj6RCX3EoA4JdASBDOmgcn7JdlvOjHbK71V\n5ALp41qS5PnTGJ3/Tj8Z2i19xqc907uJvWo7N3uP9Kve711y/9vTr/LdJX3q3GR5q8Zz0q/KPzLb\n/xsUe6T3Y/+n9CuV6/VB38g70696vil9TMMl0mdX+r+sfvHlq+mvw3+m7/sHpH8Rz4eR2X3xxfTu\n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\nJN9P8oQkr62q87XWlp0ovau1tvbF+PKqOirJI5LcPMk7W2vfzLYha7/puWxTh6nV7MjW2q/WqR+n\nIK21P57YdTgJq+yagLiryj2xrLU+/3LB8rZg+faUsWmttT/srLJ2haml7AKttW/N3fXlDb4j1vws\nydHpgXrVEPSp+bKr6uLT419bVVecvjdSVWdO/079/oplw4lCdzhOCR6X5IxJ7jsfgJKktXZsa22f\n1toPN1N4VV1sakVadf3dq+p+1fvdfznJ6WfuvniST88HoKmeP91M/WbcNf0q4DuSHDP9vaqPpZ9g\nXXyT2751ksOq6pVVda1NlpEkqarzVNXzqupLVfXrqjqyqt5eVZdZ4bHHdeeYXoNvVNUxVfWJqrrq\nCo+/U1W9p6p+VFW/rd618jEL1vtMVR00dU/6aPVujd+rqoctWPcMVfWMqvr2VOahVfXPVbXuRaiq\n+nR6C+Hl1ul+eOqprB9NdXhPVV1wrpwbVtWbq3d7XNv+M6pqt5l13pj+45Oz3WqO2qB+24wJqqpH\nV9VXprr8bNrvt9ugnDNOr9dnq4/p+FVVfaiqrrH8IfWE6fkcXVUHVNUlF6x086o6eFrn51X1xpob\nV1K9a9A2XTqr6l+r6lfT/3evqrXuUWvjyI6tJWNGquqW6VfMk2St69GWqrrDzDp/VVWfm47Nn1TV\ny6vqPBvsp4emX41Pks/MlHul6f47r3LsLin7ttNjXjq3/P5TPX9TVUdU1atrptvsBmVerao+ML2e\nR1XvAvwXM/c/J73bWkvyorXjezoW3zmt9t5p+cJWhmVlLFn3TVX1vSX3HTS939b+3mpMUB0/fvAv\nquoF0/2/qqrXVdVZ5so69fT+Oqz659f7quoS0/7boXFGVfWXVfXCJIelv1836w/pLb7XrKobbbaQ\nKYQ9IP379+9m7rpQku9Mr/mdq+q0O1BX2GW0BHFKcMsk32ytfWYXlf/RJL9Jcqn1VppO2vZKsmeS\n3ZN8JsmDp9anNd9NcqOqOn9r7Uc7q4JVdd0kf5pk/9baMVX1tvQucc9bsYi1kHfkJqvwtiQXm7Z5\n76r6epKXJ3lNa+0n21nWZZLcJMmb0vfX+ZM8OMmHq+rPWms/X6GMWyY5V3r3pWOTPCzJ+6vqSq21\nb6/zuPund4N8TvprfpMkz6qq07fWnjqzXktyviTvSm9ZfG2SuyX5j6r6XGvtwKSfEKV3LbxCkhel\nt65dOckT07tM3Wuduvx9epfJ3dO7L1a27n5YSf4lPfA+Pcm508dEvCLJjWfWu9u07t7T46+Z5DFJ\nzpN+vCZtcGb6AAAfkklEQVT9ODlPkqtMyyr9RGk9W7VIVNWjkjw7yb5J/i39xOiKU5lvXaecc6cf\nN/sn+Vb6j1P+dZIPVL+6/I259R+SPlbkuek/mvmoJB+qqsu11n451eU2Sd6SfhHi75OcJb2764FT\nmWvH5LJWldnxYr9N7xo63x30a0se+7n01+MJSf4jydrJ9aemuj0s/bX4ePrrcMH0VthrVNWVW2vH\nLCn3fUlekr5v/j7JodPyteN5r6x27G6lqu6c3oX4xa21h88sf8ZUv/3Su2P+SfqPh15lg3qmqv4y\nyYfTf3D0qekXXB+c5GNVdfXW2pembR6R5Jk5vqvVL9JbdA5N8rfpx9MXkvxgyaaWlbHIvkluX1XX\naa19dKauF01y9fTjY838cbH298vSuyH+Q/r3wcOT/Cr9NVmz9/Rc3zjtg6ukd6HcVBCoqrOnH397\npX+OHJn+vPddsPoZqncPnPfLBS23L0//HHpykg9spm5J0lr7QFX9OP14W/Pt9M+s+6Z3U/95Ve2b\n5OWttS9vdluw07XW3NxOtrf0k6Bjk7x5wX1nTe+7vHY7/ZIy3pHk2+ts4/tJvrbkvnOlf1l/aarH\nj9NPQv5syfp/nd7X/Jj0L56npJ+U1jrbv9pU9t3XWeels3VMcqtpO5eaW++B0/JrTvvkAknukuSn\nSY5Kcq51tnFskr03eD1OnT625O1Jfj/d/nuqz6lWfE13W7DsUukn5Y/c4LG7T/X8/exzT3LJadmr\nZpY9dNoX55hZdroFZe6b5Kdzyz49PfY2M8vOmOTnSV4xs+xBSX6X5M/nHv+30+Mvt8Hz+XCSLyxY\nfsvpeX5qdr+mn3hvSXLhDZ7TU6f9MfvcX5nkqO147306ydtn/j4gvcvm9r6HTz1/bEzH5s+TPHdm\n2WWn5/zzuXpfb1r+lJllX0/vHrv7gvfR82eWvXHJ/n3O/L5Y5fifWfe60/p3mFt+hvST9IOTnGZm\n+Z7T+n+3Qbn3nl7fKy24b3uO3YOm/99zel/969w6l56289C55Veelj9sg3oekP55cr6ZZRdOD2fv\nWPCaPmDB8b0lyU1W2NfLytjq/Z1+0feIJC+ZW+8fpvfCeWaWHTH7Wk9lbfM9k+TF6Z/lp515jlsy\n8zkzLX/29hw/02NulH5h4Jgkf0wP4HfJ4s/Htc+9LdO/s7ctSW4xd8z/aPr/g6f7bzhXztM32r8L\nXu8/ZsH3WHrAfMl03B+b3tX7r5OcadV94ea2q266w3Fyt9YV4dcL7vtI+pfZ2u0hm9lAa+2CrbU9\nZpdV1R5V9ab0yQWekX6F/3bp/bQf044fbzNf1kuT3CLJ/yS5VvoX8MeTfL362J/tVr1b0x3TvzDX\nvC/9S+ceix4ybfOI9IC3f/qJ5a3aDnbJa61taa29tbV2m/Qr3E9Kskd6KPp+VT1thTJ+f1xFe9eS\nc0z1OzTJlVasygdba1+fKfMb6fvkFhts+3cz2z7zdFX1Y0nOXtt2iTy8zQwGbr3F77PpLWJr7jQt\n+0FVnXPtln7FupJcf8Xns8zL2vHjzTLVNTm+ZW/+OZ1x2v5B6eHjz3dw+7N+keRiNc3EuKrpmDl2\nql9Nr3elj51b9Hq/vs20BrbWPpLe4nOLqYxLJLlEkpe21o6eWe+TSQ5MP8E+sfy/9M+s57eZK/Ot\ntTekvxc3XbftPHZTVXsleVWSZ7fWHj13953TT2rfOnfcfneq59Ljtvp4lesmeV2bGZPYWvtukjen\nt4Sf4L1Qpv39uiR3nOuedfckH2gLulLPF5F+Mj/rY0l2S7+YlBzfGjI/kcnzV61nVT2uqr6dHnqu\nkuRpSS7aWrtJa+31s5+PC7wuPTzN3m6cmTGmc16W/h325FXrt8Sv09+zZ5q/o7X2idbaA9Jbzu+d\nHupemN59+hWrdq+EXUEI4uRubSD+Nh++6X2Vb5QeBHb2YOJrpc8699v0sUi3a629vS0Y6zOvtfa+\n1trNkpwt/WThheknre+Yuj5sr1tNZX2mqi5efbDqhdOD1t0XVSG9a8WN0k923p/eorXel+t2a639\npLX2nPRWp/9K707z+Kpa93NnCj6Pr6pvpbei/DTJ4enh4qwrbv6bC5Z9Pck5q+qM62z7ilX1zurj\nYX6ZHhRfNN09v+1F4wuOTO/OteaSSa6arcP4EenBqKV3Qdusln5COr/9mq1D9TFtr62qn6efrByR\n3o0vWX1/ruJf0q/0fr76uKDnVdVVVnlgVT2gqr6crV/v6y2p37LX9iLT/y88s2zeV9LD+Ynlwumv\n26K6fS3H1327beexe/n0E/pXtNaetKC4S6R33/p+tj5uD0/ff+sdtxdIb3VZtv93S/8sODG8Jv29\nccvkuFno9sjWM16uZ/49v9Z9eO39tvb6bXWMtj5BwO+ymkdP5bw9yTVaa//SVp9g4LuttQ8tuC3s\nQtz6BBDPSPL/quqGK25jkTOlH9eLLkaubeu3rbV900PZ49K7tN47vaUJThTGBHGy1lo7qqoOS58a\nev6+Tyf9Nzuy9dTXO8N/pweH+yXZb2rheHWSV7fWvrNKAa2136a3yHx8OkF9YpKbZesWnVXcPf0L\naH7wcEv6AOXpKvisT661Vk3jhz6RZP+q2mODK40rqapK/7K7b5Lbpp9QvTu9T/ix6z02/crnY5P8\nZ3pr3lo3ipdkF164qapzT9s7LP1L+tD0E5drpV8pnd/2ssA7e6ydKr3L2hOz+Bg8dLP1XaUOUyvh\nh9NbfZ6a5BvpXZIunn6CvNP2Z2vt81V1qfRJMm6aPjHHw6vqca21f132uKp6UPpr/br0IPXT9Of1\nzzm+pXdXWXZx5NS7eLs71SaO3e+kX8C5Q1Xt3foYnVmnmu6/ZRYftzttJrYTUmvt01X11fRugG+d\n/v11+pjGVazynt9Rd0/vtnyr9Bbkd6V3VX33KhfZNuHl6d1on5w+O+hmXDbJoa21pRcbq+oK6d8H\n90jv7vq/6S1Ry1qpYJcTgjgleFeSvarqL9uumxxhK9OVtWelDzy+TvqA+sck+Yeq+p/0L603t60n\nRVjPZ9K/SLfrCuk0M9Et0wcvL/oif3H6l858CDpOa+2PVfWk9N8melD6wN5NqT771n3TB/z/afrJ\n2NPS+8ivOjvfHdPHmmw101pt3y+/bzNbWPq4op+t85rcJH2M2XVba5+f2e6OdBn7VpLzttY+vMnH\n72gL5lXSr9zfvrV23PExHTfzJ2473FraWvt1eojffwpg70k/uVoagtJf7y+01rZqtayqf1+y/rLX\n9tDp/9+d/t1jwXqXztatZ0emt6LOu8iSba9q2b78bvp+3yP9PT/rUjl+koPtLXd7j91fp39ufCx9\nwpBrta0nDPlW+pX6r7Tl0+wv88P0rnSL9v9l0lucD9vOMnemfdM/p8+RPsbmzW2dSR6209qxd4n0\naaiTJNVnbDzdKgW0/rs9B1T/yYR7p7favzXJ4dV/puCVy7pbb0Zr7fdV9cz0LnvbPVNcVd04vavb\nfy6472zp3z/3SR9P9ov0SWRe3lr73A5UG3YK3eE4JXh2ej/jV9TiaWZ36DivDabIbq19tLV2r/QA\n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\nGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgC\nAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMR\nggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADA\nUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAA\nADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQ\nBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACG\nIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAA\ngKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQg\nAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAU\nIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAA\nDEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQB\nAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEI\nQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABg\nKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgA\nABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUI\nAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABD\nEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAA\nwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQ\nAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiK\nEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAA\nhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIA\nAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCE\nIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAw\nFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQA\nAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIE\nAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAICh\nCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAA\nYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEI\nAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxF\nCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAA\nQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEA\nAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChC\nEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAY\nihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIA\nAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGC\nAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQ\nhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAA\nMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAE\nAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYi\nBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACA\noQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAA\nAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQh\nCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhBAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAM\nRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAoQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEA\nAEMRggAAgKEIQQAAwFCEIAAAYChCEAAAMBQhCAAAGIoQBAAADEUIAgAAhiIEAQAAQxGCAACAoQhB\nAADAUIQgAABgKEIQAAAwFCEIAAAYihAEAAAMRQgCAACGIgQBAABDEYIAAIChCEEAAMBQhCAAAGAo\nQhAAADAUIQgAABiKEAQAAAxFCAIAAIYiBAEAAEMRgv5/+3UgAAAAACDI33qQyyIAAGBFggAAgBUJ\nAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBF\nggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABY\nkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAA\nViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAA\ngBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAA\nAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQI\nAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJ\nAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBF\nggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABY\nkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAA\nViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAA\ngBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAA\nAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQI\nAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJ\nAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBF\nggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABYkSAAAGBFggAAgBUJAgAAViQIAABY\nCYQ1Kk3H1JiGAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bbcefd0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "http://farm9.staticflickr.com/8203/8217804857_20f4123085_z.jpg\n"
     ]
    },
    {
     "data": {
      "image/png": "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\nt0vaRNJhtpeMiANaye6m3M9fV5a1j0t6QNn9b2Hlfny58ly6QtJ3G/kZ6Pgq9/sKkqaW/XeE8pr5\nPdt/iYg/aPTzsJte3XrGcoz/oryH/EB5D9mnLL+zsc7XlPv+25KWkjSz7O+zlRWte0u6S9JWkqba\nflNE/Ka1nd0kPSjpW8pr5GeV15RXl/d3VXabfqykzygrye5Sf6OV//+V77adpGdpTneqfvt20OtE\nL1bu/1skfbGx3ZWU58Zoup0HfbtiOSsBp0p6vvI4Xqk8137S5bO9xhNtoCyb+yvPoZ0kHWf7KZ1K\nVGcFzUmSpit7mSyuvA/fNFoee+Tbkl6vfI55s3K//17SV3usvnyX5Q9GRLuV73blNetztp8ZEaNO\nItFNRDxs+yhJX1CWg9+Xt76kLFO7SvqK7WnK69qv52EvDgwqIng9Sl7K/qpbKy/is5Q3qh9LWrfH\n+hsobwQPKW8S31I+SC/cZxvLl7R37bPOzsoHiCXK388on9m4td5ry/ItSrpPUN4Irix5WqfPNq6Q\nNHWAffIa5c1whnLM0O+UrVSLDbhPp0haqLXsscrAY98BPn92M5+DpidpzbJvbpG0bGv9L5TvskFj\n2eJlv82U9OLGtq6RdHzr80sqa/B/NUreX1by8M4e32umpPe2li9WPvPZLp+5UdL+jb+/XdJ4fZ88\nbNgpO8oH0D8rH76fMcC+73z2SkmLN5a/tyzfupnvLp/frZTDxzeWHVny/MUe++S88v/3KM+tvVvr\nrK4MZndoLV+nLN+xsR9vK993SmO97Ure+5Z9SS8u67W3v0/J/7qNZTeWbb+gsexJJf9fHWU7K/U5\n3p19tVNr+SXKLrDN69AsSW9prfemsvyto+ThXOX5s2KfdQ4v58IyreXHS7pZ5ZrXKDPnt/b7ceW7\nHNv6/IWSLhv2+LbOoU1b5/Etkg4b5Dzs8V23KemuMBHHuPH5Y3qcX5eqdc+Q9MOyvec3li2rDFAv\n65LGRWpcF5WBzkxJqzWWndb87ASW/yMl3TxgugNdJ/ocl1nKng7NsvVFNa7nGu4auqEa1/zG92nu\n43eV9D7eWDalUf7e2Vj+TUn3Nb9v+ewMSSs1lr+oLN+qsexUZWC4XGPZM0o5uK/fvml9x6coJ+KY\nXvJ3lTKweEqP9Y8seen2Or6xXvNespwyiD6yXzlQ45reY9udfbt1l/cerwyQLynf4yZJe2iAexev\n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\nJzM9z+mv/Wbbe9i+QdI9tqeU919k+8+NLoyfcpf+4WXdt9o+y9kl807bv7T99FHyua2kg8ufne4G\nM136j5etVtCHAAAgAElEQVRuAkfYfpPti20/KGlz288q627aSm+psnyn1vJVbB9m+0bb99u+0qOM\nd7H9eNt/tX2V7VX6rNfZHy+yfWjZ13fYPtD20q11N7N9iu0bbD/g7Mb6mS5pXlD25UvLv/cpA/1e\nefhY2W+7NpZNsb2z7X+Ubd1ge98ueZpi+2vl/XttTxvtuLU+v2xJ9/qynUvLcW2u0zku37D9LtuX\nlXX/avuVo6T/Rkmnlz+PbZSR9rF/ru0/lrL6b9vbdUlrCdvftH112f5021+1PVAln+1X2D61lO97\nSpn8SGudtW3/ytml5T7bZ9t+XWudTpl5vu0fO8fA3O48Z217edtHlXJ0q+2vdMnLoMe3cw69ppSr\n+23/y/ZmjXX6noc99sVcY4LGeYy3lXSvSot9Sefu1r56se2DbN8i6R+Nz65r+7fleNzt7Hb9vFb6\nnTSeZ/sHZZ/cU/bxso31bpH0FEmbeE73pL7jXkYr/y7XKkkvlLTegPt2oOvEKJ5UyuHdtm+y/e1m\nOfcQ11D3uOZ3yfeqtk923gNutP1NSYt0We9YN7qVN/LyEdufsH1NKad/dunW3/r8+2z/s6xzse03\neALGGdle2XkNvVrZC2WsQtLXJS0l6VNjTiQD/fdImiHpi623Ty/n1vbu0u0OE4+WoAXLGyVdGREX\nTFL6f5R0n6S+A8Vtv0TShyS9U3nCXyDpY61aumslbWD7SRFxw0RlsNxYnyzpyIi43/YJyi5xew+Y\nRCfIG6SWppsTJK1Wtrml7X9JOkjSYRFx05BpPVPS6yUdq9xfT5L0MUm/t71WRNw+yel9Q/lr3d+U\ntExEzHK2Nv6uLP+astvlRzXnYWU22x9Vdpn4laSfSVpG2Qf+T7af22d/TJN0gKQPKy/y08vyq8u/\nIel5kl5X0v+hpMs0BNurSjpP0qKSfizpCuWDzrtsT2m0WDY/88Ty3adIesUo5bazL34i6SZl94e1\nJX1E0hMlbdJYd2tll9M9lOfX6yV929m69bVWmispy9hPlQ+o/+nx/T4paU9JO0fEHo23fi7prSVf\nf5O0uvKYPFvZNadjT0k7SDq+fOf1lMdlxMNLl20vVNZ9oaQfKR9ON5G0r+0VImK31kc2VJ4v+yt/\nIHEnScfbfkpEzOixmYuV5fPzkr4v6fyy/LzGOk+QdLKyxfsI5YPD921fHBF/buX1OSWvV0p6gbJL\n16qS3j/Kd32L8ny6WtJ3Jd2sPM4bK8uwbL9A0hnKMvZ1SQ9K2lzSVNsbR8RpJblmmZle8vAq5ZiR\n25UVLH9XduF9m6Qvlu/yq0aWBj2+UfJ5uLL8HyxpG2XL+fkRca1GPw+76TX2ZCzHeJryPnKQskLr\naOX1prMdac45sKukxSTJ9guV44ZuUl6jpiivc2faXi8iLmml8RNlV78vKe9t2yuvbx8u72+jLBvX\nKc8Lqcd5V7Y/SPm/TtnN+muSZip7Rkj99+2g14meWVNeOy5XVpiuL+kzynt0s3Jg0Ja/UccZ2V5G\nWfaXU+6725Q/0r1Rj/S62UZ5nd6n/LuzpF8ou/h3tvNO5TXxPGX3sRWV5/yNyv07FNuLKM+jD0na\nQNLDymvJD7qsvrDt5bssv69LK/2lyuvFdrb3HLA1aISIuNP2yZLeaXvliLiuvLWd8h6zl6Tv2P6V\n8vz5XfCjnpMjIngtAC/lA+YsScd1ee//JC3feC3eI40TJV3dZxvXSbq8x3uPU97YLin5+K/yYr1W\nj/U/rLw43a/8legvK8fkuM/21y1pb95nnQObeVTefGZKWqO13jZl+UvLPllJ0rsk3SrpbkmP67ON\nWZL2GeV4LKS8iP5a2WXgf5J+WfIzZcBjumiXZWsoHwR2GODztzTzOWh6ymB6lvIhauHW+geX7/L0\nxrLHl302U9JyZdljlYHRHq3PP7ks/+4oed+ypPf8Ht9rprIrZXP5s0q+N20tX6os36mx7Djlw9gz\n+uRh207ZkbSy8iH275JWGGDfb1u2+ftmmS7lfKakVzWWLdbl8z9TdrNoLju/fPbdPfbJEeX/ny/r\nbd9a5w0lT29sLX9bWb5J4xg93Emvsd7eA5b9Lcp627WWn6QMAJ7QOi73SHpiY72XlOXvH2U7r+x2\nvFv76s2NZUsqg4mDG8s+WvL03Nbndyqff3af7S+ifMi6RNKSfdY7RzmGsVkOpki6SNIFXcrMMa3P\n/7Xk5Vutbd8s6dfDHt9GeXlY0jqNZSsrrwW7DnIe9viue0i6u8u5N9Zj3Pn8N3qcX1O7fOY05fXo\nCY1lqygDhxO7pHFc6/M/Vt6XFmksu6a5ryei/DfK6VkDpjvQdaLPcZmlrIxrLj+0lIOnlr+HuYZ2\n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\nquD8dfh9JD0zIrq2JAAAJo/tK5S/E/T2+Z0XPDoxJgioTHuchO0nKsdkjWVwOQAAY1bGvLXHu26i\nbL3mvoRJw5ggoD4X2z5J2ZVxJeUA4EU0wdNHAwAwgDUk/cL2kcrJHdZW/j7iNcrufMCkIAgC6jNV\n0lslPUnZX/k8SbtG70kpAACYLDdJukQ51vdxyjFPv5D0+YgYdYpsYKwYEwQAAACgKowJAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAV\ngiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAPWcmkAAAAaGSURBVFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAA\nAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEI\nAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAA\nVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgiAA\nAAAAVSEIAgAAAFAVgiAAAAAAVSEIAgAAAFAVgqD/b78OBAAAAAAE+VsPclkEAACsSBAAALAiQQAA\nwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAA\nALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIE\nAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoE\nAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAi\nQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACs\nSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAA\nKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAA\nwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAA\nALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIE\nAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoE\nAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAi\nQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACs\nSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAA\nKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAA\nwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAA\nALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIE\nAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoE\nAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAi\nQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACs\nSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAA\nKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAA\nwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAA\nALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIE\nAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKxIEAACsSBAAALAiQQAAwIoE\nAQAAKxIEAACsSBAAALAiQQAAwIoEAQAAKwFoAh5O1hnvywAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bc24a58>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "http://farm6.staticflickr.com/5107/5829162581_d5a3822601_z.jpg\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0EAAALSCAYAAAAbeNqAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XncbWP5x/Hv1zw0i5LKlFQaVFIp0USKJpKoFIVQNIgG\nqTRrlNCPUOakgYhImadCITLPB4cIx3zO9fvjuvc566xn7/3s/QznHO7P+/Xar3Oetde+173mdd3T\nckQIAAAAAGox39zOAAAAAADMSQRBAAAAAKpCEAQAAACgKgRBAAAAAKpCEAQAAACgKgRBAAAAAKpC\nEAQAAACgKgRBAAAAAKpCEAQAAACgKgRBAIDHLNsfsT3D9nPndl4AAI8dBEEAgMeyKB8AAAZGEAQA\nAACgKgRBAAAAAKpCEAQAmGNsb1j68KzZ5buty3cvsv0S2wfZvtr2A7an2P6F7afNjXwDAB5fCIIA\nAHPScZLuk7Rxl+82lnRxRPxb0lslLSfpAEnbSzpc0ibl9wAAjMsCczsDAIB6RMSDto+VtJHtT0VE\nSJLtZ0haS9JXyqw/i4gfNn9r+1xJh9l+XUScOUczDgB4XKEmCAAwpx0paSlJazemvU+SJf1akiLi\noc4Xthe2vYSkc8s8r5hjOQUAPC4RBAEA5rQTJN0j6f2NaRtLuigirpIk20+1/RPbt0p6QNJUSdco\nh8N+8hzOLwDgcYYgCAAwR0XEw5J+L+k9tuezvYyk10k6ojHbUZK2lLS3pPco+witq6wJ4t4FABgX\n+gQBAOaGIyV9WNKbJa1Spv1akmw/RdKbJO0aEd/s/MD28+Z0JgEAj08EQQCAueFkSXcpR3x7oaTz\nIuL68t308m+7xufTyuZwAACMC0EQAGCOi4hHbf9WGQQtJumzje/utX2apM/bXkjSzZLWUQ6Z7bmQ\nXQDA4wztqgEAc8uRkhZX1u4c1fruA5JOlLStpG9JekjSemVeaoMAAOPi8ooGAAAAAKgCNUEAAAAA\nqkIQBAAAAKAqBEEAAAAAqkIQBAAAAKAqBEEAAAAAqkIQBAAAAKAqBEHAY4jtdW3PsP32CUzzO7Yf\naE1b0PaPbN9YlnfYBCynk/fVx5vWZLK9ge1/2n7Q9nTbC9k+wvZlY0hr5bLOG09GXuem9nFje+Gy\nrt+bm/kahO0v2b7W9qO2z5pLeegcG9vOK8vpdi2YhPxsU/LzoslczrDm1P4AMO8gCMI8xfZLbP/G\n9nW2H7B9k+0/296+fL9buVGN9jmlS9q/Ld/t3mPZb26l8ajtW23/2vbzG/OtO2Ae7p+kzTTRL/fq\n9vLJT0jaQdKhkj4oaa8JXNY8y/YzJB0h6W5J2yjX/RGN7wWd8/Q6j8Nj8qWltt8paXdJJ0v6iKTd\nJnl5G9j+0mQuYwLNiX06ocso94zdbD9rwPkfS/tjntQo8Oj1+WFj3iPKtHP6pPO9xrSVW2k9bPt2\n22fY/rrtZebUeuLxb4G5nQGgw/Yakk6RdL2k/5N0q6TnSHqNpE8pH8SPlnRl42dPkLSvpN+WT8dt\nrbSfrHzb/LWSNpW0a5+s/FDSBZIWkvQySVtLWsv2KhFxh6R/Kh+Om35Q8vs9SS7Tpo+2zmPk0WcZ\ntzdKuioidpkDy5qXvEbSIpJ2iYizOxPtsW3yiPiP7UUj4uEJyh/G742SHoyIj8+h5b1T0maSvjmH\nlleblyoD2T9JumWA+dkfE+c4SYd3md6sNe8EvK+yvV5E/GnAtH8p6SRlYf0Skl4l6XOSdrS9eUT8\nbox5BmYiCMJcY/s5ku6JiP+VSV9SlsCvFhH3tuZ9uiRFxCWSLmlMX0IZBP0rIvo12eo0R9pS0im2\nX9t8yG05LSKOaSzjKkl7KgOfH0fErZJmW5btr0maEhEjbgi2lyp5v71P/uY1Syn3RW2eUf79X9+5\nhkAANG8owegDyn183ySl3fXriVwWRrCGq1lifwzJ9iKSlomIq1tfXTbKfbfjbkl3aVawOojz22nb\nXl4ZGB1i+xUR8Z8y/QmSloiI6wdMG5BEczjMYc6+JhvZPkHSNZKWbXy9gqRL2wGQJJUamPHYVNKf\nIuJvkq5QlgQO6nTljXPFMS775ZJutH207bfbHu95F5Lmt/1V2zfbvt/2ibab21K231iaFt7g7N9y\nne3v2l6oV8KdpgjKGpHVSnOE6e7Tj6fRZPDtzr40D9i+2Pb6o63IoHksTSqm2n6O7T/avtf2bbZH\nlObans/252z/u6Q5xfZetp84Sl7OVgbUknRJWfe9e6R/s+1uAe/itqfZ/lH5e0SfoCHXZUnbh9u+\nx/adtvezvVo7zR6/m2H7Y41pzyrTbmrNe6Dtaxt/D33c9GP7G+UY2nKU+d5u+0zbd5dtcpnt3Rrf\nd/qSLNX63Yi+ZrbPsX2e7Vc7m9FMk/SVcmxvIunpjWO7uW+2sH1BOafusH2w7We2ltdO+371qFku\n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\n+cr3r7J9pmc1YfysZ/VdeForrXfbPsvZJPNu27+z/bxR8rmHsulbSNrXreaGtl9dqsnvtX2Ps0nl\ny1tpdPKzuu1f2J4q6bI+y1zJ9g22z7f9lAE3aTuNhW1/wPbJyhvAM0b7zQAOlHSTsjZomLysqqw9\nukMZALULAXaXdIPtb422PwZY1rNtH+Js1vpg+ffocpNS2fbPlbR+o7nDMeW7YY/Jt9v+uu1byvH3\nJ9vP6ZKnHWxfW+Y5w/areuT9c7YvK/Pdafsc2+8eZX1H9OdwaYrobGZ8fFmXW23vPsD267l9Gha3\n/TNnP797bR9h+0ld0hrL+bZ0WeZHGtOeW6Zd15r3YNtXNv5+c9nXN5Z9f53tb3v2ZppHSdq8rENn\n/e5pfD+f7Z3Lfniw7Nuf2n5Ca9l32D7M9ga2L7T9kKRN+6zXqHkr8/U9fvuk/8qyPa5t/G6fbvtl\nEIOm51lNYZcvx93darSYsP0hZ9PXB8p2eluZ7+JWOgNt91HyvLLtU8rxdoPtnbrM86SSbmf7Xmp7\nuy7zbePsA3p7yfu/msdkmWeQc2VgtlezvY/yvWldm84P6U5lC5b3e4h+fOWY/J2kN0n6cEQc0Zpl\nNUk3lf34NtuTVotoe21nQe8USeuMNn8fY9oWbRHxd+Wz7VKStm58Nce2ybyImqDu3iHpqnLQTIbT\nJN0vqe8Bbfu1krZUviV+cUl/l/SJVknV9ZLeYvtZEXHLRGXQ9lqSni3p8Ih4wPYflE3ifjxgEp0g\n764xZuEPklYoy9zc9hWSfiHpV2NoivRC5UXoN8rt9SxJn5D0V9svioj/TnJ635J0r7I6+okRMcNZ\n2/iXMn13ZbPLbSTdp5FV+9tI2lvS75Uv6HyipO0lnWH7ZX22x6HK2ovvaFbVe6f0ZzVJf5V0W1n+\nfGUdTrf9mojo9Bvq5OUAZRDxFeVLO0dwPnCfLOk6SW8bthbP9sskfUz5QPYUZcD/ubLc8XpYuf33\n9oC1Qc5+fydL+q8yAOrWgfn7yhrPHSTtYvs05XF61BhK1v+oPJZ+qlznZ0p6W5l2m/LGta+ydvYH\n5TedbTPsMbm7smDjW8rmEp9X7uOZ/aZs76BsYnuKpD2UTYGPV167pjTm+7Sk7ymPzR8oC5BWlfQq\n5THbT7emMIsoA8+Ty+/fIemLti+PiBFt4xv6bR8pC2X2VzZp3FV5/f2k8hz8eGN9xnS+RcQU29dI\neoOkg8rkNZXNqJ9j+zkRcWOZ/nrl+d/xgZK/PZXn6BqSdlI+sGxZ5vlx+ftVZZqV142OQ5XN5faX\n9C9JK5VHRWYGAAAgAElEQVR8v1jSG5tZlfRy5b7eW9ks+t/qbZC8SaMfv728o8z7f5Jul/QySVsp\n98+b+/xuvOl1mhodqyws+ryk6ZLk7EPyS2XTpJ8pC2IOUx737QLHQbd7L4sqS+j/LOkoSe+U9F3b\nERHfL/mZv8yzmvIYv0zS+pJ+anupiGgW7mynbOb+W+Wx915JB9ieHhEHl3lGO1dG5exf8kHlMfBS\n5b3+UOU5MxG+r9yOX9FgNSALK9f5rZI+0qMlztnK+8Dmkt4j6WbbB0k6ICKuG2+GbS8t6aPls6Ly\nWrOnZu+O0LG4s7l6212Nlj4dw26LXg5Tnu/rKJvMSZO8TeZ5EcGn8VHe8GZIOrrLd0+WtETjs0iP\nNI6VdE2fZdwo6T89vnu6pM8oL8ozlCfRHpJe1GP+jysvyg8oHxq+qrxJuc/yX13S3rTPPPs186i8\n4E6X9PzWfFuX6WuUbbKMpPcrS87vkfT0PsuYIWnPUfbH/MobzDHKB9mHlSU960uab8B9ulCXac9X\nPkDsMMDvpzbzOWh6ypvxDOWNcYHW/AeUdXleY9qSZZtNl/S0Mu2pysBoj9bvn12mf3+UvK9S8rBV\na/pJZVnPbExbVvmAe2xj2nbl98d3SXuPkteFlDfB25SB1eJDnG9PUj6sn1+Wc6ekvSS9ssf8M5fZ\n4/trJR3Tbf0lLSjpBkmn90tP+SByn/IB6mpl845B1+O8kt5dygfMruvR5ffLdNtPo63fOI7J85rn\nj7LJ63RJy5a/F1E+8J7Wmm/H8vvmNj5J2bR2oH3eZd+8t7Xtp0v6VGveyySdMkCavbZP5zg+ujX9\n58pr54ITdL4dqGwe2fl7X0nHlW25aSOtGcoHtc58C3dJa3flNeJprfTv6TLv20qa72hNf0+Zvn5j\n2tSyjV8z4H4aNW+DHr9DpL9lyePLxnAMDZSe8tyfIWnfLvNfXY65hRvT1ivz/2ss271H/jvH++6t\n6X9RXp8XL39vVtLbvjXfHyU9pNmv493W/zRJFw5yrgywv96i7C7wgKRHlcHb+9X9GtT1/tP4fjc1\n7ndl2vkq1xPlg/ojKs8d3dLTrGvatWXeDw2xHocp73nTldexTbptv1HS6Tyj/LEs/0FlYdQ71OUZ\n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\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAA\nAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWC\nIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAA\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAA\nAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWC\nIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAA\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAA\nAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWC\nIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAA\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAA\nAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWC\nIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAA\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAA\nAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWC\nIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAA\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAA\nAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWC\nIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAA\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAA\nAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWC\nIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAA\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAA\nAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWC\nIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAA\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAA\nAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWC\nIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAA\nUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgC\nAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABV\nIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCAAAAUBWCIAAAAABVIQgCgP9vvw4EAAAA\nAAT5Ww9yWQQArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACw\nIt72TqsAAAT1SURBVEEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEA\nAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQ\nAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsS\nBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCK\nBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACw\nIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAA\nrEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEA\nACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEA\nAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQ\nAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsS\nBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCK\nBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACw\nIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAA\nrEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEA\nACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEA\nAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQ\nAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsS\nBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCK\nBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACw\nIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAA\nrEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEA\nACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEA\nAMCKBAEAACsSBAAArEgQAACwIkEAAMBKXwZKBoVREHUAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bc24400>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "http://farm8.staticflickr.com/7273/7561777944_e506e03d6a_z.jpg\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0EAAALSCAYAAAAbeNqAAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAAPYQAAD2EBqD+naQAAIABJREFUeJzs3XXcJWX5x/Hvlw5FBcQgJVXAAEEJRZGQMBBEAQlBAQHB\nQhSUkBJRf4oIgpSCpLSkAgrSoYJ0Ll3S7e5evz+u++wzO8+pJzbY+bxfr/PafebMmblnzsx97uuu\ncUQIAAAAAJpiuimdAAAAAACYnAiCAAAAADQKQRAAAACARiEIAgAAANAoBEEAAAAAGoUgCAAAAECj\nEAQBAAAAaBSCIAAAAACNQhAEAAAAoFEIggAAr1u2t7A93vYCUzotAIDXD4IgAMDrWZQXAAB9IwgC\nAAAA0CgEQQAAAAAahSAIADDZ2F6/jOH5aJv3tinvvdf20raPsX237ZdtP2L7SNtzTol0AwCmLQRB\nAIDJ6RxJL0jasM17G0q6KSJukbS6pIUkHSVpB0knSPpS+TwAACMyw5ROAACgOSLiFdtnS9rA9o4R\nEZJk+22SVpG0e1n1NxHxi+pnbV8t6XjbK0XE5ZM14QCAaQotQQCAye0kSfNI+nhl2RckWdLJkhQR\nr7besD2z7bkkXV3WWWaypRQAME0iCAIATG7nS3pO0hcryzaU9K+IuEuSbL/F9q9sPyrpZUlPSLpH\nOR32myZzegEA0xiCIADAZBURr0k6Q9J6tqezPa+klSSdWFntFElbSTpE0nrKMUJrKluC+O0CAIwI\nY4IAAFPCSZI2k/RJSUuWZSdLku03S1pV0o8iYt/WB2wvOrkTCQCYNhEEAQCmhL9Kelo549t7JF0T\nEWPKe+PKv/UWn28pu8MBADAiBEEAgMkuIsbaPk0ZBM0m6TuV9563famk79meSdJDktZQTpntKZBc\nAMA0hn7VAIAp5SRJsytbd06pvbeRpAskbSdpP0mvSlqrrEtrEABgRFwe0QAAAAAAjUBLEAAAAIBG\nIQgCAAAA0CgEQQAAAAAahSAIAAAAQKMQBAEAAABoFIIgAAAAAI1CEARMBrZ/YvvlIaw73vZskzpd\nTWf7UduHTIH9blu+43km974xmO2Zy/fx0ymdlqapnPvvTem0TC1sr1nOyfKTYV+P2j55akoTMLkQ\nBGEitpe2/Sfb99l+2faDti+0vUN5f4+SEfZ6Xdxm26eV9/busO9P1rYxtpVB2168st6afabhpUl3\npoYsJI2vLrD9I9vrdFh3sj/Ay/ZVtq/p8N689YKK7W3Ksudtz93P9jr94Nr+qu1xts+wPcNoHE+f\nptSD0qbpB37afmPJK1ac0mmpsv3Rkq7XVQVDryDN9ib1AqrtE8uyq/rZnu0lyrLtauva9jGTOFCZ\npu+HYep5Pkbpeh7KeZ/i31HlOm33Gmd7x8q6V5XlJ3XZznaVZfWyxSu2H7F9ke3v2Z5zch0nJo/J\nWdjAVK4UWC6WNEbS4ZIelTS/pI9I2lHSwZJOlXRn5WNvkPRbSaeVV8tjtW2/Sfm093slbSzpR12S\n8gtJN0iaSdL7JW0jaRXbS0bEk5L+LenLtc/8vKT3p5Jclo3rdcyT0W6Sdq8t213S7ySdM/mT09Zw\nf+Bmk7SzpF362N6gZba/IukwSWdL2iAixg4zHa8nh0s6OiJem9IJmUTmkLSHpJclXTGF01L1MeV9\nd6ikqamSZDTU763W38vZXisizhvmdo+UtKmkH0TEqLeURcSrtmeV9L/R3nYDTMvXcy+/l/SXNsuv\nq/y/FVyvb/u9EXFLn9s+UFnOmEHSWyWtLGlfSd+2vX5EXD78ZGNqQhDUYLbnl/RcRDxbFu0m6RlJ\nH4qI52vrzi1JEfEfSf+pLJ9LGQTdGBHHd9ndhuXfrSRdbHuFiLiyw7qXRsRZlX3cJekgZeDzy4h4\nVNJE+7K9l6RHIuKENsc5T0n7413SN0lFxHjVWoKmNNtLR8RNo7Cpf0n6uu2fRsR/h5iGzTUQCE4U\nANleqlxv05yICEnTagAkDVRETG2m1nRNxPb0khaLiNtGuKlnJD2tDEiHHATZ/p2kzSX9MCIOqCx/\ng6S5ImLMCNMnSZraKwNszxYRU2OQ8bq4nkfC9hyS3hQRD9TeurZHmaPlHmUgs7ukL/W5279HxLmV\nv39uexlJF0o63fZ7Wr91U0P5AsNHd7iGsT2j7Q1sn6/MHBasvL2wpJvrAZAklRaYkdhY0nkR8TdJ\nd0jaZAifvUyZ2S8yzH1/UNIDtk+1vbbtYV33tqez/aztfSrLZrD9ou1WbWZr+R7O7oQzlb8njAlq\ndUVR3n+tsSHjPXhsyly2j7P9jO2nbB/W2t5w2Z7L9jdt3yjpgpFsqwhJ+2igNWgoafmyspb5PEnr\nt2kB+ovtG23vVILtYStdevay/ZDtF5xdPBfvsO6izq6bT5fv9nLbq7dZb2Hb55Z1HrX9U9vruo9+\n824zJsgDXT8/bvvacv3cafuLfR7jD2xfYfu/tl+yfbXtz/Tz2fL5jW3/s+z3cdtH235bbZ2rbJ/b\n5rMn2r61/H8JSfcrr43W+LaeXan6Oe8e6K7yGdt7lu/zJdsX2F6w07bLZ/eX9OPy56Me6D4zT229\nDWzf7OwKc6PtVdtsa37bf7D9WGW9euv0kNle3PYBkh7U4Jbj4RgraT9Jy9v+1BDTcpikLSXtHhH7\n196eV9I95bxvOJJ8yW3GBHlgXOT8w8kDbX/C2a37/vL93Gf7gD4/27o3V7B9uO0nVOn9YHs523+x\n/Vx5XWh72do25rb9f7b/U/KbZ2yfbfu9bfa3YHnvhVY+ImnGPtLZ9Xq2/TXbF5dr9GXbN9nessv2\n1rb978q66/ZKQ/ncSuV8PFuO4SKPwrgh26vY/oOkR5S9SIbraUm/lrSB7fcMdyMRcYOk70qaW9K2\nlbdGpXyBKYMvqyFsL2n7F5IeknSSpAUk/UATd20bI2lZ20uO8r7nUzbbt1ppTpS0obO2sx/vKv8+\nPcwkXKMsCHxQ2eVqjO29bS88lI2U1pwrlcfSsqykWSVNr+w22LKypGsqNZzVPu+vKVu1QtJF5f9f\nlnRU5fOWdEbZ7i6STpf0VeV3NiROazrH4jwk6WfK7oo7dv9k325Xfqfbuc9gxfZGko5WBmKfj4h2\nXWF2lPS4sqvjQ6Wgvbrt4dR+/lTZBfNqZbD2kLJWb+ZauuZVfserSPqlsnX0jZLOrRYinbWTf1N+\nzz9XXl+fkLS3+utW2G4MREh6r7KV8xxJ35H0gqTj+rxWd5J0bUnzD5T5+2ntCvF1treVdJykF5Xn\n5yhlrenfPfF4g07HVj2ehyV9Q3kNn6iB6/vsLvvv67xX7CFpDUk/UX63H5V0TI/DPEHSn8r/tytp\n2lTZWtKymrI77rGSvqfs1neq7TfW0nqNpJVKWndS5p1/sL11jzQMYntW21vYvlTSbZK2V3bz+b+h\nbquDY0r69hhCmg5R5jd7RsS+bVYZozw/8yrP68O2f2l76ZEnV9LA9TTcPPCLyp4uByuvxYuU99Pv\n+ty3yroLKYPRn0mS7Q8q7/vFld2j9i3/v9T2+yvbWELSp0qav6nMI5aR9DdXxk86W9QukfRx5fe9\nv/Ia3Ee99bqet5N0V9nWd5XdxY9wdj+uW0p5zZ+pPL9W5h0rd0tAuTcvVgZtuyvv23nKcb6vj2Oo\n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\nODgiHhrOxm0vXGo9+11/dttblibYmyXNUnl7EUnXtisUj0Kh5kvKlqSzJb1c/u7XZcrMdJFh7vvT\nkh4pzap2ovHzAAAgAElEQVQrD3MbkiTb89j+pe3/2H7B9tO2zxpqd5vyHdxp+2XbV9levs06C9g+\nzvbjZb1/2964ts5stvezfYPtZ20/b/ti2yvU1mv1c9/W9i6275X0kqQFu6RxXdtXlmbp523favuH\n5b11JF1cVm01kY9zGZtj+5O2T3V2R3rF2a1yfw/usvQnZ3elBW2fW87po7b3bpOeuWwfX47zv7YP\nU9YW1debqJ+9K2OxbH+xNLG/Us7noGZ222va/lc557fa3rS+zS7nrOdx2z5F0uaSql2/nuuyzSck\nLSBp3cr6Z9VWm932b5z99J+3faLtOdps63O2r3B2x33G9uklMBg229PZ/rTtM5QVHe8byfaKCyRd\no2wNmn4IaVlAGQDNqqx0uqW2yjbKvODXtt8/CumUpHfaPsP2c7Yfs32A7UGVe7a/avufzm7GT9j+\nvSfu5nutstV9qcr3fKPt6ct9sWdl3ZnK9fly7drau3y3M1SWLV3S91TZ95W2V2+TvrlsH2L7wXLt\n3m57p9o6E8bL2N7R9r0lDZe7dOvuxPb2ko4qf7a6voyzvUxtvVWdXWNetn2H7Q2Gk9Yu6VjJ9kUl\nD3nR9l22D+6wbtdjtL2ss4v4vSUdD9k+tMO998ny/bfylc26pLHrtdLlc4vaPryct5ecvx1/tP3O\n2nqtbqUf7JVvlPt7b9sPl+vwgn7yDNtLSrpHGfS2uqyOt/3t2nr95P3TOX+3bi3n+eFyDw/K/4fC\n9hvKtXy1pBttj7Q8GpJ+rmwV2X2IaVlD0mnKwGHNiHihtsox5Vrdtf59jibbc9v+tu3/SDp3BJsa\n9rmYaCNZHt1W0n2SvmN75srbk+WcTGrTdEuQpHUk3RUR102i7V+qLMx2HRjtLBRvJWlDSbMrm1q/\nXlqfWsZIWs32OyPi4dFKoLOgOZ+kEyLiZdtnKptHf9nnJlpB3tPDTMKZkhYu+9zc9h2SjpT0h4h4\nbIjbeo+kNZS1NWMkvVPS1yVdYvu9EfFUH9tYR9Lckg5WtljsIOlC28tExD2SZHt+SddKek7SL5TH\n/hlJx9meJSJahYm3luM6QdLdkt4i6WuS/mr7AxFxZ23fOygrHlr7bluwt72spNOVrX67ShqrvMZW\nLKv8U9J+ypa9X5W0SllwlaSNlIHrQcrm8xUl7SxpHuV12BLKQPwvkv4q6Yxyfna1fVtE/LGkZ3pJ\n5ysL2Acrf1w3lHSY+ugeVaxZztUhyoz525JOs71Aq8bN9orKQP0eSbspC9M/VXbd6acGu5/j/mX5\ne7myzMqusp1sI+m3ygDj52XZg5X3rWwteVTSj5Tf0zeU3+2EcTW2ty3HfoakYyW9UXk9/MP2+4d6\nL9hepKR/c0lvV7Z2/1jZnXY07KmBh8H20xq0gDJ4ml3ZAtSuhvAoSXMou9Nub/sGZV5wfEQ8O4w0\nWpm/3K6s8PqY8vueXXlucyV7/7L8OGVXt3dI2knScraXjYiXJf1Q2Q15dmWXYEt6JiLG2b6qbLtl\nOWVLV0j6sLKiSJJWlnRVRIwt+11W0t8k3SlpH0mvStpY0rm2146Iv5T13ijpcklvKul7RNLHJf2f\n7bkiol6I2abs/6Dy7y6STlF28e7kAmWN7tfKsd5Xlt9TWWfpco4OU35X2yh7DlwbEWOGmdYJbM+n\nvKbuk7S38h5ZWJk31PVzjOsor/3DJT0u6f2Stlbeg5+s7Hc5SedIul+Zr8wm6Wcl7fU09nOtdLJS\nScOxkh6WtKiyp8kHnd3Jx5b1WnlZz3xDmefspCygXyTpI8rvcsYu6ZAyv/qmMr87XgMF6mr+MKt6\n5P3FH5VdiI+QdKOkxZT311KSPtEjHYM4K0O3krSB8ru4WtLWlV4xI/GkctjAd2z/uJ8WENufVB7/\njcoAqN3v8m7Kbmh7SNrL9vnKvOvPle91WGxbeQ9spaw0nkFZydnuXrLtudosf7VN4Dbkc9FORPzP\n9kmSvidpeQ3kd5PsnExWETFNvpSFjPGSTm3z3puUfb9br1k6bONsSfd02ccDkm7v8N7cyoLef0o6\nHpV0oKT3dlj/a5LGKVtq/qoshKwo5QNtO3zmw2XbG3dZ53fVNEpat+xn8dp625TlK5ZzMq+kLypv\npOckzd1lH+MlHdTj+5hemZGeJem18jq9pGe6Pr/TmdosW1xZiN2px2dnL+l8rXrsygz9NUnHVJad\nqAxqZq9t4yzlD+d0lWOarrbOXJKekvR/lWVLln0/JumNfRznbuWY2l6XZZ1VyjY/3+a9mdss27sc\n55yVZaeU73zH2rq3Srq48vcmZV9b177Pa8vnP19ZfqCk59qc9+clvaOyfIWyfLPKsosl/VfSW2rn\n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\nADQKQRAAAACARiEIAgAAANAoBEEAAAAAGoUgCAAAAECjEAQBAAAAaBSCIAAAAACNQhAEAAAAoFEI\nggAAAAA0CkEQAAAAgEYhCAIAAADQKARBAAAAABqFIAgAAABAoxAEAQAAAGgUgiAAAAAAjUIQBAAA\nAKBRCIIAAAAANApBEAAAAIBGIQgCAAAA0CgEQQAAAAAahSAIAAAAQKMQBAEAAABoFIIgAAAAAI1C\nEAQAAACgUQiCAAAAADQKQRAAAACARiEIAgAAANAoBEEAAAAAGoUgCAAAAECjEAQBAAAAaBSCIAAA\nAACNQhAEAAAAoFEIggAAAAA0CkEQAAAAgEYhCAIAAADQKARBAAAAABqFIAgAAABAoxAEAQAAAGgU\ngiAAAAAAjUIQBAAAAKBRCIIAAAAANApBEAAAAIBGIQgCAAAA0CgEQQAAAAAahSAIAAAAQKMQBAEA\nAABoFIIgAAAAAI1CEAQAAACgUQiCAAAAADQKQRAAAACARiEIAgAAANAoBEEAAAAAGoUgCAAAAECj\nEAQBAAAAaBSCIAAAAACNQhAEAAAAoFEIggAAAAA0CkEQAAAAgEYhCAIAAADQKARBAAAAABqFIAgA\nAABAoxAEAQAAAGgUgiAAAAAAjUIQBAAAAKBRCIIAAAAANApBEAAAAIBGIQgCAAAA0CgEQQAAAAAa\nhSAIAAAAQKMQBAEAAABoFIIgAAAAAI1CEAQAAACgUQiCAAAAADQKQRAAAACARiEIAgAAANAoBEEA\nAAAAGoUgCAAAAECjEAQBAAAAaBSCIAAAAACNQhAEAAAAoFEIggAAAAA0CkEQAAAAgEYhCAIAAADQ\nKARBAAAAABqFIAgAAABAoxAEAQAAAGgUgiAAAAAAjUIQBAAAAKBRCIIAAAAANApBEAAAAIBGIQgC\nAAAA0CgEQQAAAAAahSAIAAAAQKMQBAEAAABoFIIgAAAAAI1CEAQAAACgUQiCAAAAADQKQRAAAACA\nRiEIAgAAANAoBEEAAAAAGoUgCAAAAECjEAQBAAAAaBSCIAAAAACNQhAEAAAAoFEIggAAAAA0CkEQ\nAAAAgEYhCAIAAADQKARBAAAAABqFIAgAAABAoxAEAQAAAGgUgiAAAAAAjUIQBAAAAKBRCIIAAAAA\nNApBEAAAAIBGIQgCAAAA0CgEQQAAAAAahSAIAAAAQKMQBAEAAABoFIIgAAAAAI1CEAQAAACgUQiC\nAAAAADQKQRAAAACARiEIAgAAANAoBEEAAAAAGoUgCAAAAECjEAQBAAAAaBSCIAAAAACNQhAEAAAA\noHm9pmgAAArCSURBVFEIggAAAAA0CkEQAAAAgEYhCAIAAADQKARBAAAAABqFIAgAAABAoxAEAQAA\nAGgUgiAAAAAAjUIQBAAAAKBRCIIAAAAANApBEAAAAIBGIQgCAAAA0CgEQQAAAAAahSAIAAAAQKMQ\nBAEAAABoFIIgAAAAAI1CEAQAAACgUQiCAAAAADQKQRAAAACARiEIAgAAANAoBEEAAAAAGoUgCAAA\nAECjEAQBAAAAaBSCIAAAAACNQhAEAAAAoFEIggAAAAA0CkEQAAAAgEYhCAIAAADQKARBAAAAABqF\nIAgAAABAoxAEAQAAAGgUgiAAAAAAjUIQBAAAAKBRCIIAAAAANApBEAAAAIBGIQgCAAAA0CgEQQAA\nAAAahSAIAAAAQKMQBAEAAABoFIIgAAAAAI1CEAQAAACgUQiCAAAAADQKQRAAAACARiEIAgAAANAo\nBEEAAAAAGoUgCAAAAECjEAQBAAAAaBSCIAAAAACNQhAEAAAAoFEIggAAAAA0CkEQAAAAgEYhCAIA\nAADQKARBAAAAABqFIAgAAABAoxAEAQAAAGgUgiAAAAAAjUIQBAAAAKBRCIIAAAAANApBEAAAAIBG\nIQgCAAAA0CgEQQAAAAAahSAIAAAAQKMQBAEAAABoFIIgAAAAAI1CEAQAAACgUQiCAAAAADQKQRAA\nAACARiEIAgAAANAoBEEAAAAAGoUgCAAAAECjEAQBAAAAaBSCIAAAAACNQhAEAAAAoFEIggAAAAA0\nCkEQAAAAgEYhCAIAAADQKARBAAAAABqFIAgAAABAoxAEAQAAAGgUgiAAAAAAjUIQBAAAAKBRCIIA\nAAAANApBEAAAAIBGIQgCAAAA0CgEQQAAAAAahSAIAAAAQKMQBAEAAABoFIIgAAAAAI1CEAQAAACg\nUQiCAAAAADQKQRAAAACARiEIAgAAANAoBEEAAAAAGoUgCAAAAECjEAQBAAAAaBSCIAAAAACNQhAE\nAAAAoFEIggAAAAA0CkEQAAAAgEYhCAIAAADQKARBAAAAABqFIAgAAABAoxAEAQAAAGgUgiAAAAAA\njUIQBAAAAKBRCIIAAAAANApBEAAAAIBGIQgCAAAA0CgEQQAAAAAahSAIAAAAQKMQBAEAAABoFIIg\nAAAAAI1CEAQAAACgUQiCAAAAADQKQRAAAACARiEIAgAAANAoBEEAAAAAGoUgCAAAAECjEAQBAAAA\naBSCIAAAAACNQhAEAAAAoFEIggAAAAA0CkEQAAAAgEYhCAIA4P/brwMBAAAAAEH+1oNcFgGwIkEA\nAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQ\nAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsS\nBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCK\nBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACw\nIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAA\nrEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEA\nACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEA\nAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQ\nAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsS\nBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCK\nBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACw\nIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAA\nrEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEA\nACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEA\nAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQ\nAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsS\nBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCK\nBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACw\nIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAA\nrEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEA\nACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEA\nAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQ\nAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsS\nBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCK\nBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACw\nIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAA\nrEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEA\nACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEA\nAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQ\nAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsS\nBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsSBAAArEgQAACwIkEAAMCK\nBAEAACsSBAAArEgQAACwIkEAAMCKBAEAACsBRg+RZ9l7RB8AAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1bbde0f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "for split in ['train', 'val']:\n",
    "    minibatch = sample_coco_minibatch(small_data, split=split, batch_size=2)\n",
    "    gt_captions, features, urls = minibatch\n",
    "    gt_captions = decode_captions(gt_captions, data['idx_to_word'])\n",
    "\n",
    "    sample_captions = small_rnn_model.sample(features)\n",
    "    sample_captions = decode_captions(sample_captions, data['idx_to_word'])\n",
    "\n",
    "    for gt_caption, sample_caption, url in zip(gt_captions, sample_captions, urls):\n",
    "#         plt.imshow(image_from_url(url))\n",
    "        print(url)\n",
    "        plt.title('%s\\n%s\\nGT:%s' % (split, sample_caption, gt_caption))\n",
    "        plt.axis('off')\n",
    "        plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "display_name": "Python [default]",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
